require

package
v1.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 15, 2022 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	InvalidModuleError          = errors.New("invalid module")
	IllegalModuleNameError      = errors.New("illegal module name")
	ModuleFileDoesNotExistError = errors.New("module file does not exist")
)

Functions

func DefaultSourceLoader

func DefaultSourceLoader(filename string) ([]byte, error)

DefaultSourceLoader 如果没有设置 SourceLoader,就使用 DefaultSourceLoader(参考 WithLoader() ),它只会从宿主文件系统中加载文件

func RegisterNativeModule

func RegisterNativeModule(name string, loader ModuleLoader)

func Require

func Require(runtime *js.Runtime, name string) js.Value

Types

type ModuleLoader

type ModuleLoader func(*js.Runtime, *js.Object)

type Option

type Option func(*Registry)

func WithGlobalFolders

func WithGlobalFolders(globalFolders ...string) Option

WithGlobalFolders 将给定的路径添加到 Registry 的全局文件夹列表中,以便在其他地方找不到请求的模块时进行搜索。 默认情况下,一个 Registry 的全局文件夹列表是空的 参考的 Nodejs 的实现,默认的全局文件夹列表是 $NODE_PATH、$HOME/.node_modules、$HOME/.node_libraries 和 $PREFIX/lib/node 参考: https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders

func WithLoader

func WithLoader(srcLoader SourceLoader) Option

WithLoader 设置了一个函数,这个函数将被 require() 函数调用,以便在给定的路径上获得一个模块的源代码 同样的,函数将被用来获取外部的源码 map 注意,这只影响由 require()函 数加载的模块 如果你需要把它作为源码 map 加载器,用于以不同方式解析的代码(如 runtime.RunString() 或 eval() ),请使用 (*Runtime).SetParserOptions()

type Registry

type Registry struct {
	sync.Mutex
	// contains filtered or unexported fields
}

Registry 包含一个可供多个运行时使用的已编译的模块缓存

func NewRegistry

func NewRegistry(opts ...Option) *Registry

func NewRegistryWithLoader

func NewRegistryWithLoader(srcLoader SourceLoader) *Registry

func (*Registry) Enable

func (r *Registry) Enable(runtime *js.Runtime) *RequireModule

Enable 将 require() 函数添加到指定的 Runtime

func (*Registry) RegisterNativeModule

func (r *Registry) RegisterNativeModule(name string, loader ModuleLoader)

type RequireModule

type RequireModule struct {
	// contains filtered or unexported fields
}

func (*RequireModule) Require

func (r *RequireModule) Require(p string) (ret js.Value, err error)

Require 可以用于从 Go 源代码中导入模块(类似于 JS 的 require() 函数)

type SourceLoader

type SourceLoader func(path string) ([]byte, error)

SourceLoader 是一个函数,它在给定的路径上返回一个文件数据 如果文件不存在或者是一个目录,返回 ModuleFileDoesNotExistError 这个错误将被解析器忽略,搜索将继续进行。任何其他错误都会被传递

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL