有什么处理引用路径比较好的方法?每次 require('../../../utilities/string') 这样都得想好久
react-native 似乎用了类似 @providesModule NavigationContainer
这样的方法来注册全局 module,但是好像需要预编译(貌似 watchman)支持?
package.json 能否把项目中某个 js 文件注册为一个 module?
3 回复
- 建议把公用的东西单独建个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'