Angular使用会报错
Cannot find name 'require'. Do you need to install type definitions for node? Try npm i @types/node and then add node to the types field in your tsconfig.
解决办樱侍缺法
在tsconfig.app.json文件中
设置
https://www.jianshu.com/p/a01e27bd8d48
没有必要。Angular因为模块机制比较特别,所以跟这些东西混用都比较别扭。我见过有些开源项目的用法,实在很折腾,比如最近在研究的kibana:elastic/kibana · GitHub
这是我见过的最折腾的angular用法了,比如你看,他把module作了封装:
又搞了一只private
还有promise,居然把$q又封装了
然后他的plugin机制,绕来又绕去,最后发布的时候还是把所樱伏肢有代码厅敬全打包成一个了,大小是多少呢,5M多的一个js,16w行多,并且因为他把require跟angular混用,用require的打包,只能合并文件,不能压缩文件,不然angular这里可脊世能出问题
要不是项目需求,我才不要碰这样的东西,你们有兴趣的大致翻翻他的代码,然后体会一下我的感受。
使用angularjs+
requirejs就可以实现js文手罩件的按需宽尘加载。
实现代码如下:
define(['app'慎薯禅,'navData'],
function
(app)
{
app.config(function($stateProvider,
$urlRouterProvider,
$controllerProvider,
navData){
app.registerController
=
$controllerProvider.register
app.loadJs
=
function(js){
return
function($rootScope,
$q){
var
def
=
$q.defer(),
deps=[]
angular.isArray(js)
?
(deps
=
js)
:
deps.push(js)
require(deps,function(){
$rootScope.$apply(function(){
def.resolve()
})
})
return
def.promise
}
}
$urlRouterProvider.otherwise('/memory')
angular.forEach(navData,
function(it){
var
st
=
it.state.split(/\./gi),
ctrlPath
=
'controllers/'
+
st[0],
ctrlName
=
'ctrl.'
+
st[0]
$stateProvider.state(st[0],{
url
:
'/'
+
st[0],
templateUrl
:
'tpls/'
+
st[0]
+
'.html',
controller
:
ctrlName,
resolve:{
deps:app.loadJs(ctrlPath)
}
})
})
})
})
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)