StdJS 0.2.1 版本发布,通用 JavaScript 库

简介:

StdJS 0.2.1 对0.2版本中存在的一些已知bug进行了修复,同时增加了几个新的方法,以及对部分功能的进行了更新.

功能增加:

  1. Std.css模块增加了静态方法 support , 用于测试浏览器对指定css名称的支持情况,如果浏览器支持指定名称的css属性,将会返回true,否则返回false
//true 
Std.css.support("fontSize");
Std.css.support("font-size"); 
//false 
Std.css.support("boxWidth"); 
//true 
Std.css.support("animation",true);
  1. Std.timer模块中增加了静态方法 test ,该方法用于执行一个指定的函数,可以指定函数执行的次数,当执行完毕之后,返回这个函数执行消耗的时间.
//测试循环需要的时间
Std.timer.test(function(){
    for(var i=0;i<100000000;i++){
    }
});
  1. Std.dom模块增加了静态方法 isDocument, 该方法用于判断一个对象是否为一个document对象,返回一个Boolean值.
  2. Std.dom模块增加了静态方法 documentElement,该方法用于获取一个指定元素的文档根元素,如果传递的参数不是一个DOM元素,而是document,则返回 document.documentElement,如果是window,则返回window.document.documentElement

功能更新:

  1. 更新了Std.dom的成员方法insert,当没有传递第二个参数或第二个参数为空的时候,默认插入到末尾.
  2. 更新了Std.dom的成员方法addClass,removeClass,toggleClass,className 在document和window上进行操作的时候直接转移到documentElement上

bug修复:

  1. 修复了Std.dom成员方法addClass增加类名时候可以增加空格的bug
  2. 修复了Std.dom.united模块通过css选择器获取元素时候在chrome下有可能获取重复的bug
  3. 修复了Std.dom的成员方法insert插入到最后一个索引位置不正确的bug
  4. 修复了Std.dom的成员方法hasFocus在document失去焦点之后获取到结果不准确的bug
  5. 修复了Std.ui的layout模块insert方法插入出错的bug
  6. 修复了Std.ui的locker模块有滚动条的情况下无法遮住整个网页的bug
  7. .修复了Std.dom的成员方法mouse,在document和window对象上会报错,unselect选项无法起作用的bug

StdJS文档地址:

http://doc.stdjs.com/action_documentation.location_documentation&ID=8

一些StdJS代码例子

/*
* 创建一个div节点同时包含10个HTML为abc的span子节点,并添加到body.
*/
var abc = new Std.dom("div>span{abc}*10","body")
<!--
利用css selector方式来编写html代码,该代码可以直接被转换为html
-->
<script type="text/std-css-selector" render-here="true">
    (.header > .title + .navigation) +
    (.body > .content > span{body content}) +
    (.footer > .links > (a[href='#']{link1} + a[href='#']{link2}))
</script>
<!--
用css selector字符串进行快速创建UI组建的布局,比JS创建省下了80%的代码
-->

<script type="text/std-ui" std-name="test">
GridLayout[rows=3][columns=2] > (
    (Label{名称:} + LineEdit#name) +
    (Label{日期:} + DateTimeEdit#dateTime) +
    (Label{描述:} + TextEdit#text)
)
</script>
/*
* 异步载入第三方外部资源文件,文件全部载入之后会触发 Std.main 方法
* Std.require 方法支持跨域文件的载入
*/

//3个文件同时载入
Std.require("1.js","1.css","123.png");

//3个文件顺序载入,一个载入完成之后载入下一个
Std.require(["1.js","1.css","123.png"]);
/*
* 设置代码仓库的源地址,当使用代码源中包时自动加载对应代码文件,而无需手动调用
* 源中可以包含数千个包,而这些包仅会在使用时候才会被载入.
*/
Std.source("StdJS","http://source.stdjs.com");

//载入名称为 ui.Window 包之后触发回调函数
Std.use("ui.Window",function(){
    //...
});

//创建一个函数,在执行这个函数时候,自动从代码源中载入包 "ui.Button","ui.ToolBar"
var func1 = Std.func(function(){
    //....
},{
    packages:["ui.Button","ui.ToolBar"]
});
/*
* 添加新的根据浏览器内核自动调配的css规则.
* 该方法可以自动解决浏览器的兼容性,并且随时可以删除或禁用这个规则
* 该方法在大多情况下都可以直接替代style或link标签来载入css
*/
Std.css({
    body:{
        color:"red",
        transform:"skewY(-6deg)"
    },
    span:{
        color:"black"
    },
    "#content":{
        '>':{
            p:{
                lineHeight:"20px"
            }
        }
    }
});
<!--
通过html标签创建Std.animation.keyframes与CSS3通用并兼容所有浏览器的动画规则..
StdJS内置解析和执行的模块,无需浏览器支持,可以在低版本的浏览器中运行
可以动态的手动暂停或者停止正在执行的任务
-->

<script type="text/std-animation">
@keyframes testKeyframe{
    0%{
      width:50px;
      height:100px;
      background:red;
    }
    50%{
      width:90px;
      height:120px;
      background:blue;
      color:red;
      animation-timing-function:ease;
    }
    100%{
      height:150px;
      width:300px;
      background:green;
      color:blue;
    }
}
</script>
<!--
高性能模板,内置两套语法,简写语法和JS语法
-->

<script type="text/std-template" std-name="tpl1">
    <?@include 'header.tpl'?>
    <div class="title"><?=title?></div>
    <?#each abc as index,value?>
    <div class="item">
        <div class="_index"><?=index?></div>
        <div class="_value"><?=value?></div>
    </div>
    <?/each?>
</script>

<script>
    Std.main(function(){
        Std.template("tpl1").renderTo("body",{
            abc:["first","second","last"],
            title:"title text"
        });
    })
</script>
/*
* 创建两个模块,A和B,模块B继承模块A
* 模块B会继承模块A的所有参数,例如静态方法,option参数选项,模型等
* 模块可以被多次继承,成员方法本身也可以被多次扩展
*/
var A = Std.module({
    model:"events",
    option:{
        width:32,
        height:32,
        name:"test"
    },
    static:{
        func1:function(){
            console.log("static func1");
        },
        func2:function(){
            console.log("static func2");
        }
    },
    public:{
        func1:function(){
            console.log("func1_A");
        },
        func2:function(){
            console.log(this.opts.name);
        }
    },
    main:function(option){
        this.init_opts(option);
        console.log("main_a");
    }
});

//创建模块B,继承模块A,并且扩展成员方法func1
var B = Std.module({
    parent:A,
    option:{
        name:"testB"
    },
    extend:{
        func1:function(){
            console.log("func1_B")
        }
    },
    main:function(){
        console.log("main_b");
    }
})

//创建模块A的实例
var a = new A({width:44});

//创建模块B的实例
var b = new B({width:56});

文章转载自 开源中国社区[https://www.oschina.net]

相关文章
|
4天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
29 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
5月前
|
JavaScript 前端开发 Python
用python执行js代码:PyExecJS库
文章讲述了如何使用PyExecJS库在Python环境中执行JavaScript代码,并提供了安装指南和示例代码。
209 1
用python执行js代码:PyExecJS库
|
3月前
|
移动开发 JavaScript 前端开发
一些处理浏览器兼容性问题的JavaScript库
这些库在处理浏览器兼容性问题方面都有着各自的特点和优势,可以根据具体的需求和项目情况选择合适的库来使用,从而提高代码的兼容性和稳定性,为用户提供更好的体验。同时,随着浏览器技术的不断发展,还需要持续关注和学习新的兼容性解决方案。
131 48
|
3月前
|
JavaScript 前端开发
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
|
3月前
|
CDN
如何在项目中使用Moment.js库?
如何在项目中使用Moment.js库?
|
3月前
|
JavaScript 前端开发
如何在不影响性能的前提下使用JavaScript库来实现复杂的动画效果?
如何在不影响性能的前提下使用JavaScript库来实现复杂的动画效果?
|
3月前
|
算法 开发者
Moment.js库是如何处理不同浏览器的时间戳格式差异的?
总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
67 1
|
3月前
|
JavaScript 前端开发 搜索推荐
Moment.js、Day.js、Miment,日期时间库怎么选?
【10月更文挑战第29天】如果你需要一个功能强大、插件丰富的日期时间库,并且对性能要求不是特别苛刻,Moment.js是一个不错的选择;如果你追求极致的轻量级和高性能,那么Day.js可能更适合你;而如果你有一些特定的日期时间处理需求,并且希望在性能和功能之间取得平衡,Miment也是可以考虑的。
|
3月前
|
存储 JavaScript 前端开发
decimal.js库的安装和使用方法
【10月更文挑战第24天】decimal.js 是一个非常实用的高精度计算库,通过合理的安装和使用,可以在 JavaScript 中实现精确的数值计算和处理。你可以根据具体的需求和项目情况,灵活运用该库来解决数字精度丢失的问题。
|
4月前
|
JavaScript 测试技术 API
跟随通义灵码一步步升级vue2(js)项目到vue3版本
Vue 3 相较于 Vue 2 在性能、特性和开发体验上都有显著提升。本文介绍了如何利用通义灵码逐步将 Vue 2 项目升级到 Vue 3,包括备份项目、了解新特性、选择升级方式、升级依赖、迁移组件和全局 API、调整测试代码等步骤,并提供了注意事项和常见问题的解决方案。
216 4

热门文章

最新文章

  • 1
    当面试官再问我JS闭包时,我能答出来的都在这里了。
    49
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 3
    Node.js 中实现多任务下载的并发控制策略
    34
  • 4
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 5
    【JavaScript】深入理解 let、var 和 const
    49
  • 6
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    47
  • 7
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    57
  • 8
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    57
  • 9
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    72
  • 10
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    57