日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Sg.js框架核心概念

發(fā)布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sg.js框架核心概念 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

Sg.js框架核心概念:

1)所有變量、方法、類對象全部都是從屬于$g主樹,由$g分支出很多$g.變量名、$g.方法、$g.對象id、$g.類;
2)獲取控件內(nèi)部屬性必須使用公開的get方法獲取,禁止直接用訪問內(nèi)部變量方式來獲取控件內(nèi)部變量、屬性值;
3)修改控件內(nèi)部屬性、綁定方法等都必須使用公開的set方法來操作,禁止直接用訪問內(nèi)部變量方式來修改控件內(nèi)部屬性;
4)$g.$inits.sg_控件名稱.init();可以執(zhí)行所有同類型控件強(qiáng)制初始化;

5)$g.$utils.方法父類.方法名稱();可以執(zhí)行具體的工具類方法
6)多用對象作為入?yún)⒑突卣{(diào)參數(shù),對未來的擴(kuò)展大有幫助;
7)每個控件包含:
主(控件主體對象:文檔對象sgDOM和虛擬對象sgObject)
謂(方法Function、事件Event)
賓(變量var、數(shù)組Array、對象Object)

其中sgDOM是框架定義的控件文檔對象、sgObject是sgDOM對應(yīng)的方法主體可以直接調(diào)用其所控制的對象方法、事件監(jiān)聽、變量等行為;
8)控件遵循總分思想,“總”即為復(fù)雜的入?yún)⒌腏SON對象,“分”即為將局部變量方法化;
前者是類似set({wiidth:100,height:200,click:function(e){}})的結(jié)構(gòu),
后者是類似setWidth(100)、getWidth()、setHeight(200)、getHeight、click:(function(e){e});
其中,set(復(fù)雜JSONObject)、get()返回sgDOM和sgObject、setPropertyName(value)設(shè)置屬性值、getPropertyName()獲取屬性值、setClickEvent(callback)設(shè)置回調(diào)觸發(fā)事件。

Sg.js官方中文文檔:www.shuzhiqiang.com
官方QQ群:312353533

sg-control-demo.html

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><link rel="stylesheet" href="sg-control-demo.css"><script src="sg-control-demo.js"></script><title>$g.js框架-控件模板</title>
</head>
<body><sg-controllername sg-id="sg1" show></sg-controllername>
<sg-controllername show></sg-controllername></body>
</html><script>onload = function () {$g.$inits.sg_controllername.init();$g.sg1.setBackgroundColor("red");$g.sg1.set({show: true,content: "點(diǎn)擊顏色變藍(lán)色",style: {backgroundColor: "yellow",},event: {click: function () {$g.sg1.setBackgroundColor("blue");$g.sg1.get().sgDOM.style.color = "white";//字體變白色$g.sg1.get().sgDOM.innerHTML = "變成了藍(lán)色";}}});$g.sgControllername.setBackgroundColor("orange");$g.sgControllername.setContent("移入寬度變寬");$g.sgControllername.setMouseOverEventt(function (e) {e.sgDOM.style.width = "300px";e.sgDOM.innerHTML = "寬度變成了300px";});}</script>

sg-control-demo.css

@charset "UTF-8";sg-controllername, sg-controllername * {transition: .382s;-moz-transition: .382s;-webkit-transition: .382s;-o-transition: .382s;-khtml-transition: .382s;width: 200px;height: 100px;text-align: center;line-height: 100px;font-size: 20px;font-weight: bold;font-family: 'Microsoft YaHei', 'PingFangSC-Regular', 'sans-serif', 'San Francisco', 'Microsoft Sans Serif', 'Arial'; /*頂部加 @charset "UTF-8";*/color: #000;display: none;cursor: pointer;
}
sg-controllername[show]{display: block;
}

sg-control-demo.js

/*以下代碼均不用修改:▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽▽*/
if (!$g) {var $g = {};
}
$g.$inits || ($g.$inits = {}), $g.$inits.sg_controllername || ($g.$inits.sg_controllername = {}), $g.$inits.sg_controllername.init = function (sgDoms) {var sn = "sg-" + "controllername", sa = document.querySelectorAll(sn);if (sgDoms) {if (typeof sgDoms == "string") {sn = sgDoms.indexOf("sg-") > -1 ? sgDoms : (sgDoms + " " + sn);sa = document.querySelectorAll(sn);} else {sgDoms instanceof Element && (sa = [sgDoms]);sgDoms instanceof Array && (sa = sgDoms);}}var noSgidTotal = 0;for (var i = 0, len = sa.length; i < len; i++) {var a = sa[i], sgid = a.getAttribute("sg-id");sgid || noSgidTotal++;}if (noSgidTotal > 1) return alert("監(jiān)測到存在" + noSgidTotal + "個未設(shè)置sg-id的" + sn + "控件,最多只允許一個控件不設(shè)置sg-id,否則會報(bào)錯喲!");for (var i = 0, len = sa.length; i < len; i++) {var a = sa[i], nn = a.nodeName.toLowerCase(), sgid = a.getAttribute("sg-id"), i_d = sgid || nn;var iD = i_d.replace(/\b(\w)/g, function (m) {return m.toUpperCase();}).replace(/-/g, ''), iD = iD.charAt(0).toLowerCase() + iD.substr(1);$g[iD] = new __sg__controllername__(i_d);}
};
/*△△△△△△△△△△△△△△△△△△△△△△△△△△△△△△△△*/
/*** 請先更新“controllername”名稱!!!* 主要修改以下方法體(面向?qū)ο蟮膶懛?#xff09;:????????????????????????????????*/
var __sg__controllername__ = function (id) {//Event----------------------------------------------------------------var __setClickEvent = this.setClickEvent = function (callbakc) {_sgDOM.onclick = function () {callbakc && callbakc(__get());};};var __setMouseOverEventt = this.setMouseOverEventt = function (callbakc) {_sgDOM.onmouseover = function () {callbakc && callbakc(__get());};};//Function----------------------------------------------------------------var __show = this.show = function () {_sgDOM.setAttribute("show", true);};var __hide = this.hide = function () {_sgDOM.removeAttribute("show");};//set----------------------------------------------------------------var __set = this.set = function (d) {if (d.show != null && d.show != undefined) {d.show ? __show() : __hide();}if (d.content) {__setContent(d.content);}if (d.style) {__setBackgroundColor(d.style.backgroundColor);}if (d.event) {__setClickEvent(d.event.click);__setMouseOverEventt(d.event.mouseover);}};var __setBackgroundColor = this.setBackgroundColor = function (color) {_sgDOM.style.backgroundColor = color;};var __setContent = this.setContent = function (html) {_sgDOM.innerHTML = html;};//get----------------------------------------------------------------var __get = this.get = function () {var _sgObject = {event: {click: __setClickEvent,mouseover: __setMouseOverEventt,},show: _sgDOM.getAttribute("sg-show") || false,style: {backgroundColor: __getBackgroundColor()},content: __getContent(),};return {sgDOM: _sgDOM, sgObject: _sgObject};};var __getBackgroundColor = this.getBackgroundColor = function () {return _sgDOM.style.backgroundColor;};var __getContent = this.getContent = function () {return _sgDOM.innerHTML;};//sgDOM----------------------------------------------------------------var _tpl ='控件內(nèi)容';var _sgDOM = null, __init = function () {_sgDOM = document.querySelector('[sg-id="' + id + '"]') || document.querySelector(id + ':not([sg-id])'), _sgDOM.innerHTML = _tpl;__set({show: _sgDOM.getAttribute("sg-show") || false,style: {backgroundColor: _sgDOM.getAttribute("sg-background-color"),},content: _sgDOM.getAttribute("sg-content"),})};__init();
};
//默認(rèn)初始化(不傳參代表初始化所有控件,傳入sel、DOM、DOM數(shù)組可以對應(yīng)初始化控件)
$g.$inits.sg_controllername.init();

總結(jié)

以上是生活随笔為你收集整理的Sg.js框架核心概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。