首先,我很抱歉,但是我在npm中没有很多经验,所以请原谅我^^
我有一个使用angular的http服务器。现在,我在index.html上加载所有需要的模块,例如:
<!-- internal js files -->
<script src="app.module.js"></script>
<script src="app.config.js"></script>
<script src="do/something.module.js"></script>
<script src="do/something.component.js"></script>
<script src="do/another_thing.module.js"></script>
<script src="do/another_thing.component.js"></script>
因此,当网站加载时,它还会加载所有模块,而无需验证我是否“允许看到它们”。反过来,这也使其(恕我直言)很大的安全风险,因为攻击者可以看到网站的工作以及如何在模块中调用私有API ...
就像我说的那样,我真的在这方面没有经验。所以我只是想知道:什么是惯例?您将/如何解决此问题?
$injector.loadNewModules
(^ v1.6.x)支持延迟加载AngularJs(v1.x)模块。
此示例假设$injector.loadNewModules
和angularjs v1.6.x
为了防止Angular模块进入应用程序捆绑包,它不应成为应用程序依赖树的一部分,这意味着不会导入Angular模块@uirouter/angularjs v1.x.x
并将其用作一部分admin
角度模块的位置。
app
使用此状态配置,每当您的应用导航到任何// router config
$stateProvider
.state('admin', {
abstract: true,
url: '/admin',
data: {
requiresLogin: true,
},
onEnter: /*@ngInject*/ (userService, $stateParams) => {
return userService.getUserFromToken($stateParams.propertyId);
},
lazyLoad: $transition$ => {
// this dynamic import tells webpack to split the admin-panel module (and it dependecies) from the app bundle
return import(/* webpackChunkName: "admin" */ '../admin-panel/admin-panel.module').then(
module => $transition$.injector().loadNewModules([module.AdminPanelModule],
);
},
})
.state('admin.main', {
url: '/',
views: {
'@': {
component: 'dashboard',
},
},
});
页面(继承自抽象admin
状态)时,admin
都会检查用户是否对该页面具有许可权,然后检查onEnter
将被调用(仅在第一次),以将lazyLoad
加载到应用模块。