V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pertersonvv
V2EX  ›  程序员

RequireJS 中是否最好不使用 data-main 属性引入脚本?

  •  
  •   pertersonvv · 2015-01-01 10:23:44 +08:00 · 11828 次点击
    这是一个创建于 3375 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为main脚本是异步加载,如果页面中其他JS代码依赖这个main脚本,会报错?

    这里有人深入使用过RequireJS么?

    一个让人抓狂的例子,应该是在main.js中配置了baseURL,然后在页面中require这个baseURL下对应代码吧,赶脚会出错的,呵呵

    这个是不是RequireJS的痛点呢?
    那么baseURL应该在哪里配置呢? 在每个html页面写一段配置么?又赶脚好麻烦:(

    这里有用RequireJS的盆友么?
    快来现身说法啊:)

    8 条回复    2017-12-14 09:29:14 +08:00
    yyfearth
        1
    yyfearth  
       2015-01-01 10:53:40 +08:00
    既然用了RequireJS 页面中怎么还会有其他JS代码?
    pertersonvv
        2
    pertersonvv  
    OP
       2015-01-01 10:56:05 +08:00
    @yyfearth 所有代码都不夹杂在html中么?
    yyfearth
        3
    yyfearth  
       2015-01-01 10:56:25 +08:00
    既然用了RequireJS 所有的JS代码都应该在main.js中被引用和被调用
    RequireJS本来就是用来解决各种js的依赖的

    而且现在不都是希望要异步加载的吗 这样就不会阻断html页面的渲染
    yyfearth
        4
    yyfearth  
       2015-01-01 10:56:59 +08:00
    @pertersonvv 既然代码是放在html里面的 那你用RequireJS干嘛?
    yyfearth
        5
    yyfearth  
       2015-01-01 11:00:35 +08:00
    做webapp最基本的就是 html页面 css样式 js代码 三者分离
    所以js代码都是全部在一个个js文件里面的
    然后html页面用script一个个引用进去

    但是你一个个加script到html麻烦而且容易出问题
    然后RequireJS就出来解决这个问题

    而且用RequireJS最后 一般都是用他的一个脚本
    把所有js文件打包成一个js文件 所以只要加载一次就可以了

    RequireJS异步调用分散的js文件 一般只用在开发环境中
    yimity
        6
    yimity  
       2015-01-01 16:42:17 +08:00
    那我有一种需求,有50个模块,肯定要在配置文件中配置,这时候,这个配置文件应该如何加载?data-main应该如何写?模块应该如何写?谢谢。
    yyfearth
        7
    yyfearth  
       2015-01-01 16:53:44 +08:00
    @yimity data-main 只是一个入口 就像c java的main函数一样
    之后你要加载什么 都可以用代码在这main.js里面按照你的需求加载所需要的模块

    比如 main.js 你可以

    ```
    if (env === 'local') {
    require(['a','b'], function(a, b){ .... });
    } else {
    require(['a','c'], function(a, c){ .... });
    }
    ```

    你可以有更加复杂的逻辑 比如根据json的配制加载不同的模块 或者根据浏览器的类型之类
    hetal
        8
    hetal  
       2017-12-14 09:29:14 +08:00
    可以参考这个吧
    <script async
    src="/js/lib/require.js"
    data-urlargs="ver=10.1"
    data-config="/js/src/config.js"
    data-main="/js/src/index"
    ></script>

    https://github.com/requirejs/requirejs/pull/1705
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5753 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:11 · PVG 14:11 · LAX 23:11 · JFK 02:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.