react-native 似乎用了类似 @providesModule NavigationContainer
这样的方法来注册全局 module,但是好像需要预编译(貌似 watchman)支持?
package.json 能否把项目中某个 js 文件注册为一个 module?
- 建议把公用的东西单独建个project, 然后install到
node_modules
里, 本地可以直接用npm link
测试 - 或者可以在node_modules里建个link直接指向到你的
utilities
文件夹
然后就可以直接类似 require('app/utilities')
了
楼上 +1
scripts: {
"postinstall": "cd node_modules; ln -sf ../app"
}
另外
不必吝惜全局变量的使用,定义一个 PROJECT_ROOT
全局变量又何妨。
require(PROJECT_HOME + '/utilities/xxx')
react-native 的 @providersModule 其实是flow提供的,flow可以通过bable的一个plugin来transpile, flow基本上是个es6+es7+type,或者说是typescript - interface - annotation-… 关于引入太多的问题,我现在的解决办法是:创建一个文件把所有的引入都放进去并export出来,然后在你需要使用的地方可以就引入一个文件就可以了,举例:
// ./shared/imports.js
export {db} from '../../db.js';
export {validator, isRequired} from '../../validator.js';
export {render} from '../../render';
// ./source.js
import {db, validator, isRequired, render} from './shared/import'
@JasonBoy windows也可以?
实名反对楼上所有回答(是不是很知乎范儿? 这种需要想好久的问题你需要通过工具解决想好久的问题,而不是去改变想出来的结果来达到不去想的目的。
你可以在自己的工程目录中建立一个node_modules文件夹, node require 的规则是 当直接require 一个模块名的时候,他会向上找 到node_modules 文件夹,直到找到一个,在此文件夹中寻找依赖
@rwing 不确定,应该也有类似的东西
我也嫌弃require里面的…太多了很丑
@jiangzhuo 是的 但是有啥更更好的解决办法??
前端项目可以配置Webpack/resolve/alias来配置,Nodejs项目可以Hook住require(https://www.npmjs.com/package/require-hook )。当然,这样做会失去智能提示,编辑器 / IDE也要手动改改。
@rwing交给IDE IDE 可以自动补全,IDE可以根据完整地址查找引用生成编码时的提示等等