您可以在客户端代码中使用Require功能吗?

问题描述:

当寻找这件事最常见的答案,我得到的是使用RequireJS您可以在客户端代码中使用Require功能吗?

由于我在一个节点的环境我第一次看他们的Use with Node部分和安装包为开发利用npm install requirejs概述并正确安装的所有文件。

在用法部分中的第一行显示的代码下面一行: var requirejs = require('requirejs');

当这行代码推杆,我感到我一直在试图解决这一整段时间相同的错误Error: require is not defined

我相信在这一点上,我只是在这里失去了一些东西。我虽然点RequireJS是为了让你在本地使用require()函数?

我只是试图在我的一个控制器中包含.js。有没有简单或有效的方法来做到这一点?

谢谢你的时间。

+2

“客户端代码”通常是指“在浏览器代码”;你在谈论这个,还是你在谈论Node? – Pointy

+0

如果你想在浏览器中使用requirejs,那么遵循在Node中使用requirejs的说明不会对你有所帮助。 – Quentin

+1

不需要。您需要使用其他的东西(Browserify,Babel等)来允许'require'按照您在浏览器中的预期工作。这两个库都会将代码转换(转换)成在浏览器中可用的东西。 –

看一看Browserify。我认为这是你正在寻找的。

它允许您在客户端使用require('module'),就像您在Nodejs代码中一样。

你可以按照下面的步骤来使用它:

1)安装Nodejs
2)使用npm install browserify -g --save-dev
三送Browserify)收件使用require()您的JS像下面的例子

main.js

var $=require('jquery'); 
$('#test').text('browserify working'); 

index.html

<body> 
<p id='test'></p> 
<script type='text/javascript' src='bundle.js'></script> 
</body> 

4)使用npm install jquery --save
5)编译main.js使用browserify main.js -o bundle.js。在这里browserify将读取main.js并将其转换成js代码该浏览器可以理解为浏览器无法理解require()到bundle.js获取jquery。简单来说,browserify会将js文件转换为浏览器。
(你可以看到index.html中的脚本标签使用了bundle.js作为源代替main.js)

6)在浏览器中打开index.html。

编辑
只要你知道,Requirejs和Browserify是不同的东西,并且你使用Browserify require()不Requirejs。

可以参考示例GitHub库here

+0

这可能看起来像一个愚蠢的问题,但'它是如何做到这一点?我的意思是,除了安装Browserify以使其起作用外,还有什么额外的工作要做?我刚刚在网站上安装了它,但我仍然遇到同样的错误。第一页上的教程使用require()函数显示它们,所以我假设它应该刚开箱即可使用? –

+0

感谢您的更新答案。当我到达编译main.js到bundle.js的步骤时,我收到一个错误,说它无法找到正在尝试使用'require();'加载的模块我有三重检查,该模块的路径是正确的,但它仍然抛出此错误... –

+0

你做了第4步获取jquery – Flake