亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使node.js要求絕對?(而不是親戚)

如何使node.js要求絕對?(而不是親戚)

慕森王 2019-10-14 14:05:46
我想始終通過項目的根目錄而不是相對于當前模塊來要求文件。例如,如果您查看https://github.com/visionmedia/express/blob/2820f2227de0229c5d7f28009aa432f9f3a7b5f9/examples/downloads/app.js第6行,您將看到express = require('../../')這真是糟糕的IMO。想象一下,我只想將我所有的例子都更靠近根源。那將是不可能的,因為我將不得不在每個示例中多次更新30多個示例。對此:express = require('../')我的解決方案是為基于root的情況提供特殊情況:如果字符串以$開頭,則它相對于項目的根文件夾。任何幫助表示贊賞,謝謝更新2現在,我正在使用require.js,它允許您以一種方式編寫并在客戶端和服務器上均可使用。Require.js還允許您創建自定義路徑。-?更新3現在,我移至webpack + gulp,并使用Enhanced-require處理服務器端的模塊。請參閱此處的基本原理:http : //hackhat.com/p/110/module-loader-webpack-vs-requirejs-vs-browserify/
查看完整描述

3 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

然后呢:


var myModule = require.main.require('./path/to/module');

它需要的文件就好像是從主js文件中獲取的文件一樣,因此只要您的主js文件位于項目的根目錄下,它就可以很好地工作……這是我的感謝。


查看完整回答
反對 回復 2019-10-14
?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

Browserify手冊中有一個非常有趣的部分:

避免../../../../../../ ..

并非應用程序中的所有內容都正確屬于公共npm,并且在許多情況下,設置私有npm或git repo的開銷仍然很大。這里有一些避免  ../../../../../../../相對路徑問題的方法。


node_modules

人們有時會反對將特定于應用程序的模塊放入node_modules中,因為在不從npm檢入第三方模塊的情況下,如何檢入內部模塊并不明顯。


答案很簡單!如果您有一個.gitignore忽略的文件node_modules:


node_modules

您可以!為每個內部應用程序模塊添加一個例外:


node_modules/*

!node_modules/foo

!node_modules/bar

請注意,您無法取消忽略一個子目錄,如果父已被忽略。所以,不是忽略的node_modules,你必須忽略每一個目錄內 node_modules與  node_modules/*技巧,然后您可以添加您的例外。


現在,在應用程序中的任何位置,您都可以擁有require('foo') 或require('bar')不擁有非常大且脆弱的相對路徑。


如果你有很多的模塊,并希望讓他們從NPM安裝的第三方模塊更獨立的,你可以把它們放在一個目錄下node_modules,例如node_modules/app:


node_modules/app/foo

node_modules/app/bar

現在,您將能夠require('app/foo')或require('app/bar') 在應用程序的任何地方。


在您的中.gitignore,只需添加一個例外node_modules/app:


node_modules/*

!node_modules/app

如果您的應用程序在package.json中配置了轉換,則您需要在您node_modules/foo或您的node_modules/app/foo組件目錄中創建一個單獨的package.json及其自己的轉換字段,因為轉換不會跨模塊邊界應用。這將使您的模塊對應用程序中的配置更改更健壯,并且更容易在應用程序外部獨立地重用軟件包。


符號鏈接

如果您正在開發可以進行符號鏈接并且不需要支持Windows的應用程序,則另一個方便的技巧是將lib/ 或app/文件夾符號鏈接到中node_modules。從項目根目錄執行以下操作:


ln -s ../lib node_modules/app

現在,您可以從項目中的任何位置lib/通過require('app/foo.js')獲取獲取文件lib/foo.js。


自定義路徑

您可能會看到一些地方談論使用$NODE_PATH 環境變量或opts.paths為節點添加目錄,并通過瀏覽器查找來查找模塊。


與大多數其他平臺不同,$NODE_PATH與有效使用node_modules目錄相比,在節點中使用路徑樣式的外殼樣式數組在節點中不那么理想。


這是因為您的應用程序與運行時環境配置之間的聯系更加緊密,因此有更多的活動部件,并且您的應用程序只有在正確設置環境后才能正常工作。


node和browserify都支持,但不鼓勵使用  $NODE_PATH。


查看完整回答
反對 回復 2019-10-14
  • 3 回答
  • 0 關注
  • 623 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號