这个浏览器端的 require 和 exports 实现怎么样?
发布于 12 年前 作者 jiyinyiyong 8550 次浏览 最后一次编辑是 8 年前

想要写个浏览器脚本, 发现没个 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 原来是这样. 服了…

回到顶部