• seajs中define方法的id和dependencies参数


    这篇其实算是补充上一篇。

    事记:

    昨天一同事(之前没用过seajs)突然要用seajs,我无意间听到,加上我最近又在研究它,便“自不量力”地跑上去跃跃欲试。

    看到他已经敲出来的那些看似有点像的seajs代码,跟我之前的用法不尽相同,我就犯迷糊了。然后回来又自行研究了一下,才大概搞明白了怎么回事,也算帮同事搞定了seajs的引进。

    下面进入正题:

    我之前的用法是

    html:

    1 <script type="text/javascript" src="xx/js/sea.js" id="seajsnode" data-main="mymod"></script>//data-main指定入口文件

    mymod.js

    1 define(function (require) {
    2   //require('xxx')//引入别的模块
    3   //业务代码  
    4 }

    基本没有使用seajs.use方法

    今天总结了一下seajs.use的使用

    首先:页面上还是引入seajs

    1 <script type="text/javascript" src="xx/js/sea.js" id="seajsnode" ></script>

    然后下面紧跟着调用seajs.use

    1 <script>
    2  seajs.use([ 'seajs/jquery','seajs/tagcloud', 'seajs/imgAlter'], function ($, b, c) {
    3         var v = $.browser.version;
    4         //debugger;
    5     });
    6 </script>

    第一个参数,即那个数组,是依赖的模块,各个模块的输出接口按顺序跟后面的callback形参一一对应。

    依赖模块加载完毕后,执行callback。

    其实上面的内容很多教程里都有。

    但这里不得不提的是,如果这里的依赖模块里如果指定了id,比如

    define('gallery/jquery/1.7.2/jquery',[],function (require) {
        //jquery code
    }

    而这个id跟模块路径又不一致,会导致无法获取输出接口

    经浏览器查看,引用依赖的jquery的路径是正确的,并且也的确加载到jquery模块了,但输出接口始终为null。

    后来google到,开发阶段不推荐define的参数传入三个,只需给定后面的factory即可,发布时通过构建工具提取压缩模块,会自动加上idhe依赖数组(即第二个参数),这样seajs能够更快的定位本身这个模块和它依赖的模块。

    顺便提一下,第二个参数,如果显示传入了,那么seajs就不会再通过正则去扫描factory.toString(),直接根据这个参数去加载依赖模块,如果为[]即表示无依赖。

  • 相关阅读:
    JDK11 | 第七篇 : ZGC 垃圾收集器
    JDK11 | 第六篇 : Epsilon 垃圾收集器
    JDK11 | 第五篇 : 启动单个Java源代码文件的程序
    JDK11 | 第四篇 : 增强API
    JDK11 | 第三篇 : 局部变量类型推断
    JDK11 | 第二篇 : JShell 工具
    JDK11 | 第一篇 : JDK11 介绍
    客户端负载均衡Ribbon之源码解析
    DockerSwarm 微服务部署
    DockerSwarm 集群环境搭建
  • 原文地址:https://www.cnblogs.com/webstone/p/3046376.html
Copyright © 2020-2023  润新知