Пакет js
Обзор
Пакет js предоставляет доступ к среде хоста WebAssembly при использовании архитектуры js/wasm. Его API основан на семантике JavaScript.
Этот пакет ЭКСПЕРИМЕНТАЛЬНЫЙ. В настоящее время его цель — только позволить запускать тесты, но пока не предоставлять полный API для пользователей. Он освобожден от обещания совместимости с Go.
Индекс
Примеры
Файлы пакета
func.go js.go
func CopyBytesToGo
func CopyBytesToGo(dst []byte, src Value) int
CopyBytesToGo копирует байты из src в dst. Вызывает панику, если src не является Uint8Array или Uint8ClampedArray. Возвращает количество скопированных байтов, которое будет минимальным из длин src и dst.
func CopyBytesToJS
func CopyBytesToJS(dst Value, src []byte) int
CopyBytesToJS копирует байты из src в dst. Вызывает панику, если dst не является Uint8Array или Uint8ClampedArray. Возвращает количество скопированных байтов, которое будет минимальным из длин src и dst.
тип Error
Error оборачивает ошибку JavaScript.
type Error struct {
// Value is the underlying JavaScript error value.
Value
}
func (Error) Error
func (e Error) Error() string
Error реализует интерфейс error.
тип Func
Func — это обернутая Go-функция, которая должна вызываться из JavaScript.
type Func struct {
Value // the JavaScript function that invokes the Go function
// contains filtered or unexported fields
}
func FuncOf
func FuncOf(fn func(this Value, args []Value) any) Func
FuncOf возвращает функцию для использования в JavaScript.
Go-функция fn вызывается со значением ключевого слова "this" JavaScript и аргументами вызова. Возвращаемое значение вызова — это результат Go-функции, преобразованный обратно в JavaScript в соответствии с ValueOf.
Вызов обернутой Go-функции из JavaScript приостановит цикл событий и запустит новую горутину. Другие обернутые функции, которые вызываются во время вызова из Go в JavaScript, выполняются в той же горутине.
Вследствие этого, если одна обернутая функция блокируется, цикл событий JavaScript заблокируется до возврата этой функции. Следовательно, вызов любой асинхронной JavaScript-API, которая требует цикла событий, например fetch (http.Client), приведет к немедленному тупику. Поэтому функция, которая блокирует, должна явно запускать новую горутину.
Func.Release должен вызываться для освобождения ресурсов, когда функция больше не будет вызываться.
Пример
Код:
var cb js.Func
cb = js.FuncOf(func(this js.Value, args []js.Value) any {
fmt.Println("button clicked")
cb.Release() // release the function if the button will not be clicked again
return nil
})
js.Global().Get("document").Call("getElementById", "myButton").Call("addEventListener", "click", cb)
func (Func) Release
func (c Func) Release()
Release освобождает ресурсы, выделенные для функции. После вызова Release функция не должна вызываться. Разрешено вызывать Release, пока функция всё ещё выполняется.
тип Type
Type представляет тип JavaScript значения Value.
type Type int
const (
TypeUndefined Type = iota
TypeNull
TypeBoolean
TypeNumber
TypeString
TypeSymbol
TypeObject
TypeFunction
) func (Type) String
func (t Type) String() string
тип Value
Value представляет значение JavaScript. Нулевое значение — это значение JavaScript "undefined". Значения могут проверяться на равенство с помощью метода Equal.
type Value struct {
// contains filtered or unexported fields
}
func Global
func Global() Value
Global возвращает глобальный объект JavaScript, обычно "window" или "global".
func Null
func Null() Value
Null возвращает значение JavaScript "null".
func Undefined
func Undefined() Value
Undefined возвращает значение JavaScript "undefined".
func ValueOf
func ValueOf(x any) Value
ValueOf возвращает x как значение JavaScript:
| Go | JavaScript |
| ---------------------- | ---------------------- |
| js.Value | [its value] |
| js.Func | function |
| nil | null |
| bool | boolean |
| integers and floats | number |
| string | string |
| []interface{} | new array |
| map[string]interface{} | new object |
Вызывает панику, если x не является одним из ожидаемых типов.
func (Value) Bool
func (v Value) Bool() bool
Bool возвращает значение v как bool. Вызывает панику, если v не является булевым значением JavaScript.
func (Value) Call
func (v Value) Call(m string, args ...any) Value
Call выполняет вызов JavaScript метода m значения v с заданными аргументами. Вызывает панику, если у v нет метода m. Аргументы преобразуются в значения JavaScript в соответствии с функцией ValueOf.
func (Value) Delete
func (v Value) Delete(p string)
Delete удаляет свойство JavaScript p значения v. Вызывает панику, если v не является объектом JavaScript.
func (Value) Equal
func (v Value) Equal(w Value) bool
Equal сообщает, равны ли v и w согласно оператору === JavaScript.
func (Value) Float
func (v Value) Float() float64
Float возвращает значение v как float64. Вызывает панику, если v не является числом JavaScript.
func (Value) Get
func (v Value) Get(p string) Value
Get возвращает свойство JavaScript p значения v. Вызывает панику, если v не является объектом JavaScript.
func (Value) Index
func (v Value) Index(i int) Value
Index возвращает индекс JavaScript i значения v. Вызывает панику, если v не является объектом JavaScript.
func (Value) InstanceOf
func (v Value) InstanceOf(t Value) bool
InstanceOf сообщает, является ли v экземпляром типа t согласно оператору instanceof JavaScript.
func (Value) Int
func (v Value) Int() int
Int возвращает значение v, усеченное до int. Вызывает панику, если v не является числом JavaScript.
func (Value) Invoke
func (v Value) Invoke(args ...any) Value
Invoke выполняет вызов JavaScript значения v с заданными аргументами. Вызывает панику, если v не является функцией JavaScript. Аргументы преобразуются в значения JavaScript в соответствии с функцией ValueOf.
func (Value) IsNaN
func (v Value) IsNaN() bool
IsNaN сообщает, является ли v значением JavaScript "NaN".
func (Value) IsNull
func (v Value) IsNull() bool
IsNull сообщает, является ли v значением JavaScript "null".
func (Value) IsUndefined
func (v Value) IsUndefined() bool
IsUndefined сообщает, является ли v значением JavaScript "undefined".
func (Value) Length
func (v Value) Length() int
Length возвращает свойство JavaScript "length" значения v. Вызывает панику, если v не является объектом JavaScript.
func (Value) New
func (v Value) New(args ...any) Value
New использует оператор JavaScript "new" со значением v в качестве конструктора и заданными аргументами. Вызывает панику, если v не является функцией JavaScript. Аргументы преобразуются в значения JavaScript в соответствии с функцией ValueOf.
func (Value) Set
func (v Value) Set(p string, x any)
Set устанавливает свойство JavaScript p значения v в ValueOf(x). Вызывает панику, если v не является объектом JavaScript.
func (Value) SetIndex
func (v Value) SetIndex(i int, x any)
SetIndex устанавливает индекс JavaScript i значения v в ValueOf(x). Вызывает панику, если v не является объектом JavaScript.
func (Value) String
func (v Value) String() string
String возвращает значение v как строку. String — это специальный случай из-за соглашения Go о методе String. В отличие от других методов-получателей, он не вызывает панику, если тип v не TypeString. Вместо этого он возвращает строку вида "<T>" или "<T: V>", где T — тип v, а V — строковое представление значения v.
func (Value) Truthy
func (v Value) Truthy() bool
Truthy возвращает значение JavaScript "истинности" значения v. В JavaScript ложными (falsy) являются false, 0, "", null, undefined и NaN, а всё остальное — истинным (truthy). См. https://developer.mozilla.org/en-US/docs/Glossary/Truthy.
func (Value) Type
func (v Value) Type() Type
Type возвращает тип JavaScript значения v. Он похож на оператор typeof JavaScript, за исключением того, что он возвращает TypeNull вместо TypeObject для null.
тип ValueError
ValueError возникает, когда метод Value вызывается на Value, который его не поддерживает. Такие случаи документированы в описании каждого метода.
type ValueError struct {
Method string
Type Type
}
func (*ValueError) Error
func (e *ValueError) Error() string
© Google, Inc.
Licensed under the Creative Commons Attribution License 3.0.
http://golang.org/pkg/syscall/js/