2016-02-27 50 views
1

當尋找這件事最常見的答案,我得到的是使用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'按照您在瀏覽器中的預期工作。這兩個庫都會將代碼轉換(轉換)成在瀏覽器中可用的東西。 –

回答

1

看一看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

相關問題