• 基于seajs的模块化编程


    前段时间由于项目需求把seajs加入了项目中,越用越喜欢,感叹玉伯大神这头巨牛的创作能力。kissy也是玉伯大神的作品,就是太强大,有点臃肿,适合大型项目开发。

    seajs的github地址:https://github.com/seajs/seajs,想研究的进门右拐。

    1.seajs.config

    seajs.config({
    //设置根目录地址 base:'url', // 设置路径,方便跨目录调用 paths: { 'arale': 'https://a.alipayobjects.com/arale', 'jquery': 'https://a.alipayobjects.com/jquery' }, // 设置别名,方便调用 alias: { 'class': 'arale/class/1.0.0/class', 'jquery': 'jquery/jquery/1.10.1/jquery' } })

    2.加载模块:

        加载a和b模块后执行回调函数func,seajs.use(['a','b'],func);

    3.define


    define
    (id, deps, function(require, exports, module) { // 模块代码 });
    id:模块唯一标识,'hello'
    deps:模块的依赖,['jquery']
    require:引入依赖模块,功能:
    (1)require('jquery');
    (2)require.resolve(id):返回名为id模块的绝对地址.
    (3)require.async(['a','b'],func);异步加载a和b模块后执行回调,和require(id)的区别,前者都会下载下来,后者为按需下载.
    exports:向外提供接口,写法:
    (1)exports.name;
    (2)return {};
    (3)module.exprots={};
    module:保存着模块相关信息的对象,有:
    (1)module.id:模块的唯一标识.
    (2)module.uri:模块的绝对路径,当没有指定id时,module.id===module.uri.
    (3)module.dependencies:保存着当前模块依赖的数组.

    4.路径标识:

        (1)以.开头的为相对路径,相对于当前模块路径

        (2)不以.开头的为绝对路径,相对于base的值定位

    5.默认会末尾自动添加.js后缀,如果不希望自动添加可在末尾加上#,如:a.json#

    6.jquery插件兼容seajs:

        一般jquery插件都会兼容amd规范的requirejs,这样我们就可以改下代码,比如:

  • 相关阅读:
    web api authentication
    平常项目中缓存使用经验和遇到过的问题(3)
    平常项目中缓存使用经验和遇到过的问题(2)
    平常项目中缓存使用经验和遇到过的问题(1)
    DllImport attribute的总结
    人生路上对我影响最大的三位老师
    自我介绍
    7-1 币值转换 (20 分)
    7-1 打印沙漏 (20 分)
    form表单自动提交
  • 原文地址:https://www.cnblogs.com/zhenxianluo/p/6178320.html
Copyright © 2020-2023  润新知