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

2015-01-01 10:23:44 +08:00
 pertersonvv

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

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

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

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

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

11853 次点击
所在节点    程序员
8 条回复
yyfearth
2015-01-01 10:53:40 +08:00
既然用了RequireJS 页面中怎么还会有其他JS代码?
pertersonvv
2015-01-01 10:56:05 +08:00
@yyfearth 所有代码都不夹杂在html中么?
yyfearth
2015-01-01 10:56:25 +08:00
既然用了RequireJS 所有的JS代码都应该在main.js中被引用和被调用
RequireJS本来就是用来解决各种js的依赖的

而且现在不都是希望要异步加载的吗 这样就不会阻断html页面的渲染
yyfearth
2015-01-01 10:56:59 +08:00
@pertersonvv 既然代码是放在html里面的 那你用RequireJS干嘛?
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
2015-01-01 16:42:17 +08:00
那我有一种需求,有50个模块,肯定要在配置文件中配置,这时候,这个配置文件应该如何加载?data-main应该如何写?模块应该如何写?谢谢。
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
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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/158388

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX