这个浏览器端的 require 和 exports 实现怎么样?
发布于 13 年前 作者 jiyinyiyong 8936 次预览 最后一次回复是 13 年前 来自
想要写个浏览器脚本, 发现没个 require 觉得很不爽,
但是微博上很热闹的 SeaJS 又太复杂点, 写短的代码都觉得学习成本不值得…
然后在网上搜这遇到了这个脚本: https://gist.github.com/2602521
是在 StackOverflow 找到的: http://stackoverflow.com/questions/6971583/node-style-require-for-in-browser-javascript
找到了作者自己的介绍: http://pixelsvsbytes.com/blog/2012/04/node-js-require-for-your-browser/
他给出的代码示例是这样的:
<html>
<head>
<script type="text/javascript" src="require.js"></script>
</head>
<body>
<script type="text/javascript">
var greeting = require('./greeting.js');
greeting.sayHello();
</script>
</body>
</html>
exports.sayHello = function() {
alert('Hello World!');
}
觉得很有意思的样子… 等大家评价下 :)
11 回复
不会吧,sea.js感觉木有学习成本阿,模块包装在define函数里,其他都一样,小项目不怎么用这个,大的才显出方便。
看两个代码量就知道了呀, 说起来 AMD 模式我真心不习惯
使用了require和exports倒也模块化了不少,就看习惯那种方式
用了下, 发现只能
require相对路径, 不能加载http://开头的代码, 不开心…然后加载路径是… 按照
.html文件执行的 URL 执行的… 结果是我无法把模块交给其他项目用… 好难过啊, 有没有高人肯解救一下啊…@gxmarioo7 我错了… SeaJS 相对接近 CMD 的… 放弃这个脚本, 尝试学习 SeaJS 去
@jiyinyiyong 我还纳闷呢,seajs文档写的是遵循CMD规范的…
@gxmari007 主要是套了一层
define, 我被迷惑了… 话说像 Node 里一样直接来require不是感觉很爽么… 加个这个干啥@jiyinyiyong 浏览器里加载脚本会阻塞UI,包装在一个回调函数中以便异步加载啊.
还有更好的处理依赖关系= =
@gxmari007 原来是这样. 服了…