Angular 使用require()

Angular 使用require(),第1张

require是node.js中常用方法,用脊辩于引入模块谈顷、 JSON、或本地文件。

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)

}

})

})

})

})


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12281543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存