mirror of
https://gitee.com/energye/energy.git
synced 2024-12-03 12:17:44 +08:00
upgrade-dev v2.3.38
This commit is contained in:
parent
b6ead27f68
commit
58417f3b89
@ -10,12 +10,18 @@
|
||||
|
||||
package bind
|
||||
|
||||
import "sync"
|
||||
|
||||
var bind = &v8bind{fieldCollection: make(map[string]JSValue)}
|
||||
|
||||
type v8bind struct {
|
||||
fieldCollection map[string]JSValue
|
||||
lock sync.Mutex
|
||||
}
|
||||
|
||||
func (m *v8bind) Add(name string, value JSValue) {
|
||||
// set 添加或修改
|
||||
func (m *v8bind) set(name string, value JSValue) {
|
||||
m.lock.Lock()
|
||||
defer m.lock.Unlock()
|
||||
m.fieldCollection[name] = value
|
||||
}
|
||||
|
@ -18,22 +18,18 @@ import (
|
||||
"github.com/energye/energy/pkgs/json"
|
||||
)
|
||||
|
||||
const (
|
||||
null = "null"
|
||||
undefined = "Undefined"
|
||||
)
|
||||
|
||||
// JSValue
|
||||
//
|
||||
// GO和JS通用变量类型
|
||||
// GO和JS动态变量类型
|
||||
type JSValue interface {
|
||||
Name() string //当前变量绑定的名称
|
||||
Bytes() []byte //变量值转换为字节
|
||||
SetValue(value any) //设置新值
|
||||
Integer() int //返回 Integer 类型
|
||||
Double() float64 //返回 Double 类型
|
||||
String() string //返回 String 类型
|
||||
Boolean() bool //返回 Boolean 类型
|
||||
Object() JSObject //返回 Object 类型
|
||||
Array() JSArray //返回 Array 类型
|
||||
Null() JSNull //返回 Null 类型
|
||||
Undefined() JSUndefined //返回 Undefined
|
||||
Function() JSFunction //返回 Function
|
||||
IsInteger() bool //是否 Integer
|
||||
IsDouble() bool //是否 Double
|
||||
IsString() bool //是否 String
|
||||
@ -58,12 +54,12 @@ type JSValue interface {
|
||||
// V8Value 绑定到JS的字段
|
||||
type V8Value struct {
|
||||
name string
|
||||
value *json.JsonData
|
||||
value json.JSON
|
||||
}
|
||||
|
||||
// Bytes 值转换为字节
|
||||
func (m *V8Value) Bytes() []byte {
|
||||
return nil
|
||||
return m.value.Bytes()
|
||||
}
|
||||
|
||||
// SetValue 设置值
|
||||
@ -75,51 +71,6 @@ func (m *V8Value) Name() string {
|
||||
return m.name
|
||||
}
|
||||
|
||||
func (m *V8Value) String() string {
|
||||
if m.IsString() {
|
||||
return m.value.String()
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *V8Value) Integer() int {
|
||||
return m.value.Int()
|
||||
}
|
||||
|
||||
func (m *V8Value) Double() float64 {
|
||||
return m.value.Float()
|
||||
}
|
||||
|
||||
func (m *V8Value) Boolean() bool {
|
||||
return m.value.Bool()
|
||||
}
|
||||
|
||||
func (m *V8Value) Object() JSObject {
|
||||
if m.IsArray() {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *V8Value) Array() JSArray {
|
||||
if m.IsArray() {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *V8Value) Null() JSNull {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *V8Value) Undefined() JSUndefined {
|
||||
|
||||
return nil
|
||||
}
|
||||
func (m *V8Value) Function() JSFunction {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *V8Value) IsString() bool {
|
||||
return m.value.IsString()
|
||||
}
|
||||
@ -145,127 +96,231 @@ func (m *V8Value) IsObject() bool {
|
||||
}
|
||||
|
||||
func (m *V8Value) IsFunction() bool {
|
||||
return false
|
||||
return m.value.Type() == consts.GO_VALUE_FUNC
|
||||
}
|
||||
|
||||
func (m *V8Value) IsNull() bool {
|
||||
return m.value == nil
|
||||
return m.value.Type() == consts.GO_VALUE_NIL
|
||||
}
|
||||
|
||||
func (m *V8Value) IsUndefined() bool {
|
||||
return m.value == nil
|
||||
return m.value.Type() == consts.GO_VALUE_NIL
|
||||
}
|
||||
|
||||
func (m *V8Value) AsString() JSString {
|
||||
return nil
|
||||
if m.IsString() {
|
||||
v := new(jsString)
|
||||
v.name = m.name
|
||||
v.value = m.value.JsonData()
|
||||
bind.set(m.name, v)
|
||||
m.free()
|
||||
return v
|
||||
}
|
||||
return nil // default
|
||||
}
|
||||
|
||||
func (m *V8Value) AsInteger() JSInteger {
|
||||
return nil
|
||||
if m.IsInteger() {
|
||||
v := new(jsInteger)
|
||||
v.name = m.name
|
||||
v.value = m.value.JsonData()
|
||||
bind.set(m.name, v)
|
||||
m.free()
|
||||
return v
|
||||
}
|
||||
return nil // default
|
||||
}
|
||||
|
||||
func (m *V8Value) AsDouble() JSDouble {
|
||||
return nil
|
||||
if m.IsDouble() {
|
||||
v := new(jsDouble)
|
||||
v.name = m.name
|
||||
v.value = m.value.JsonData()
|
||||
bind.set(m.name, v)
|
||||
m.free()
|
||||
return v
|
||||
}
|
||||
return nil // default
|
||||
}
|
||||
|
||||
func (m *V8Value) AsBoolean() JSBoolean {
|
||||
return nil
|
||||
if m.IsBoolean() {
|
||||
v := new(jsBoolean)
|
||||
v.name = m.name
|
||||
v.value = m.value.JsonData()
|
||||
bind.set(m.name, v)
|
||||
m.free()
|
||||
return v
|
||||
}
|
||||
return nil // default
|
||||
}
|
||||
|
||||
func (m *V8Value) AsNull() JSNull {
|
||||
return nil
|
||||
if m.IsNull() {
|
||||
v := new(jsNull)
|
||||
v.name = m.name
|
||||
v.value = m.value.JsonData()
|
||||
bind.set(m.name, v)
|
||||
m.free()
|
||||
return v
|
||||
}
|
||||
return nil // default
|
||||
}
|
||||
|
||||
func (m *V8Value) AsUndefined() JSUndefined {
|
||||
return nil
|
||||
if m.IsUndefined() {
|
||||
v := new(jsUndefined)
|
||||
v.name = m.name
|
||||
v.value = m.value.JsonData()
|
||||
bind.set(m.name, v)
|
||||
m.free()
|
||||
return v
|
||||
}
|
||||
return nil // default
|
||||
}
|
||||
|
||||
func (m *V8Value) AsFunction() JSFunction {
|
||||
return nil
|
||||
if m.IsFunction() {
|
||||
v := new(jsFunction)
|
||||
v.name = m.name
|
||||
v.value = m.value.JsonData()
|
||||
bind.set(m.name, v)
|
||||
m.free()
|
||||
return v
|
||||
}
|
||||
return nil // default
|
||||
}
|
||||
|
||||
func (m *V8Value) AsObject() JSObject {
|
||||
return nil
|
||||
if m.IsObject() {
|
||||
v := new(jsObject)
|
||||
v.name = m.name
|
||||
v.value = m.value.JsonData()
|
||||
bind.set(m.name, v)
|
||||
m.free()
|
||||
return v
|
||||
}
|
||||
return nil // default
|
||||
}
|
||||
|
||||
func (m *V8Value) AsArray() JSArray {
|
||||
return nil
|
||||
if m.IsArray() {
|
||||
v := new(jsArray)
|
||||
v.name = m.name
|
||||
v.value = m.value.JsonData()
|
||||
bind.set(m.name, v)
|
||||
m.free()
|
||||
return v
|
||||
}
|
||||
return nil // default
|
||||
}
|
||||
|
||||
func (m *V8Value) AsV8Value() JSValue {
|
||||
return m
|
||||
}
|
||||
|
||||
func (m *V8Value) free() {
|
||||
if m.value != nil {
|
||||
m.name = ""
|
||||
m.value.Free()
|
||||
m.value = nil
|
||||
}
|
||||
}
|
||||
|
||||
// NewInteger GO&JS 数字类型
|
||||
func NewInteger(name string, value int) JSInteger {
|
||||
if name == "" {
|
||||
return nil
|
||||
}
|
||||
v := new(jsInteger)
|
||||
v.name = name
|
||||
v.value = &json.JsonData{T: consts.GO_VALUE_INT, V: value, S: 4}
|
||||
bind.Add(name, v)
|
||||
bind.set(name, v)
|
||||
return v
|
||||
}
|
||||
|
||||
// NewString GO&JS 字符串类型
|
||||
func NewString(name, value string) JSString {
|
||||
if name == "" {
|
||||
return nil
|
||||
}
|
||||
v := new(jsString)
|
||||
v.name = name
|
||||
v.value = &json.JsonData{T: consts.GO_VALUE_STRING, V: value, S: len(value)}
|
||||
bind.Add(name, v)
|
||||
bind.set(name, v)
|
||||
return v
|
||||
}
|
||||
|
||||
// NewDouble GO&JS 浮点类型
|
||||
func NewDouble(name string, value float64) JSDouble {
|
||||
if name == "" {
|
||||
return nil
|
||||
}
|
||||
v := new(jsDouble)
|
||||
v.name = name
|
||||
v.value = &json.JsonData{T: consts.GO_VALUE_FLOAT64, V: value, S: 8}
|
||||
bind.Add(name, v)
|
||||
bind.set(name, v)
|
||||
return v
|
||||
}
|
||||
|
||||
// NewBoolean GO&JS 布尔类型
|
||||
func NewBoolean(name string, value bool) JSBoolean {
|
||||
if name == "" {
|
||||
return nil
|
||||
}
|
||||
v := new(jsBoolean)
|
||||
v.name = name
|
||||
v.value = &json.JsonData{T: consts.GO_VALUE_BOOL, V: value, S: 1}
|
||||
bind.Add(name, v)
|
||||
bind.set(name, v)
|
||||
return v
|
||||
}
|
||||
|
||||
// NewNull GO&JS 空类型
|
||||
func NewNull(name string) JSNull {
|
||||
if name == "" {
|
||||
return nil
|
||||
}
|
||||
v := new(jsNull)
|
||||
v.name = name
|
||||
v.value = &json.JsonData{T: consts.GO_VALUE_NIL, V: "null", S: 4}
|
||||
bind.Add(name, v)
|
||||
v.value = &json.JsonData{T: consts.GO_VALUE_NIL, V: null, S: len(null)}
|
||||
bind.set(name, v)
|
||||
return v
|
||||
}
|
||||
|
||||
// NewUndefined GO&JS 未定义类型
|
||||
func NewUndefined(name string) JSUndefined {
|
||||
if name == "" {
|
||||
return nil
|
||||
}
|
||||
v := new(jsUndefined)
|
||||
v.name = name
|
||||
v.value = &json.JsonData{T: consts.GO_VALUE_NIL, V: "undefined", S: 9}
|
||||
bind.Add(name, v)
|
||||
v.value = &json.JsonData{T: consts.GO_VALUE_NIL, V: undefined, S: len(undefined)}
|
||||
bind.set(name, v)
|
||||
return v
|
||||
}
|
||||
|
||||
// NewFunction GO&JS 函数类型
|
||||
func NewFunction(name string, fn any) JSFunction {
|
||||
if name == "" {
|
||||
return nil
|
||||
}
|
||||
v := new(jsFunction)
|
||||
v.name = name
|
||||
v.value = &json.JsonData{T: consts.GO_VALUE_FUNC, V: fn, S: 0}
|
||||
bind.Add(name, v)
|
||||
bind.set(name, v)
|
||||
return v
|
||||
}
|
||||
|
||||
// NewObject GO&JS 对象类型
|
||||
func NewObject(name string, object any) JSObject {
|
||||
if name == "" {
|
||||
return nil
|
||||
}
|
||||
if vv := json.NewJSONObject(object); vv != nil {
|
||||
v := new(jsObject)
|
||||
v.name = name
|
||||
v.value = vv.JsonData()
|
||||
bind.Add(name, v)
|
||||
bind.set(name, v)
|
||||
return v
|
||||
}
|
||||
return nil
|
||||
@ -273,11 +328,14 @@ func NewObject(name string, object any) JSObject {
|
||||
|
||||
// NewArray GO&JS 数组类型
|
||||
func NewArray(name string, array any) JSArray {
|
||||
if name == "" {
|
||||
return nil
|
||||
}
|
||||
if vv := json.NewJSONArray(array); vv != nil {
|
||||
v := new(jsArray)
|
||||
v.name = name
|
||||
v.value = vv.JsonData()
|
||||
bind.Add(name, v)
|
||||
bind.set(name, v)
|
||||
return v
|
||||
}
|
||||
return nil
|
||||
|
@ -13,13 +13,11 @@
|
||||
// 静态类型是不可变类型
|
||||
package bind
|
||||
|
||||
// Bind V8Value
|
||||
// Bind 绑定Go类型
|
||||
//
|
||||
// 变量和函数绑定, 在Go中定义的字段绑定到JS字段中, 在Go中定义的函数导出到JS
|
||||
// 变量和函数绑定, 在Go中定义的字段绑定到JS中, 在Go中定义的函数导出到JS
|
||||
//
|
||||
// 支持类型 String = string , Integer = int32 , Double = float64, Boolean = bool, Function = func, Objects = struct | map, JSONArray = Slice
|
||||
//
|
||||
// 主进程和子进程
|
||||
// 支持类型 String = string , Integer = int32 , Double = float64, Boolean = bool, Function = func, Object = struct | map, Array = Slice
|
||||
func Bind(name string, bind any) error {
|
||||
return nil
|
||||
}
|
||||
|
@ -42,6 +42,7 @@ func main() {
|
||||
fmt.Println("nullKey", nullKey.Value())
|
||||
undefinedKey := bind.NewUndefined("undefinedKey")
|
||||
fmt.Println("undefinedKey", undefinedKey.Value())
|
||||
bind.Bind("", "")
|
||||
|
||||
//内置http服务链接安全配置
|
||||
cef.SetBrowserProcessStartAfterCallback(func(b bool) {
|
||||
|
Loading…
Reference in New Issue
Block a user