热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Webpack2和Angular1:导出和导入模块

如何解决《Webpack2和Angular1:导出和导入模块》经验,为你挑选了1个好方法。

希望得到一些澄清,为什么以下不能按预期工作,希望,这是我可能忽略的一些简单.没有Webpack,当前的实现可以按预期工作.

理想情况下,我希望保持当前的实现,我觉得注册组件/控制器/等应该在自己的文件中完成,只需指向相关模块.但如果这不是最佳做法,我也希望看到另一个建议.

文件root.module是我定义根模块的地方,然后在root.component文件中我将组件添加到该模块.

不导入模块的当前实现:

//root.component.js
'use strict';

var root = {
  template: require('./root.html')
};

module.exports = angular
  .module('root')
  .component('root', root);
'use strict';

//root.module.js
module.exports = angular
    .module('root', [
        require('./common').name,
        require('./components').name
    ]);

如果我按预期执行以下工作并加载模块:

//root.component.js
'use strict';

var root = {
  template: require('./root.html')
};
module.exports = root;

//root.module.js
'use strict';

module.exports = angular
  .module('root', [
    require('./common').name,
    require('./components').name
  ])
  .component('root', require('./root.component'));

当前目录树:

??? ./src
?   ??? ./src/app
?   ?   ??? ./src/app/app.less
?   ?   ??? ./src/app/app.spec.js
?   ?   ??? ./src/app/common
?   ?   ?   ??? ./src/app/common/app.component.js
?   ?   ?   ??? ./src/app/common/app.controller.js
?   ?   ?   ??? ./src/app/common/app.html
?   ?   ?   ??? ./src/app/common/footer
?   ?   ?   ?   ??? ./src/app/common/footer/app-footer.component.js
?   ?   ?   ?   ??? ./src/app/common/footer/app-footer.controller.js
?   ?   ?   ?   ??? ./src/app/common/footer/app-footer.html
?   ?   ?   ?   ??? ./src/app/common/footer/index.js
?   ?   ?   ??? ./src/app/common/header
?   ?   ?   ?   ??? ./src/app/common/header/app-nav.component.js
?   ?   ?   ?   ??? ./src/app/common/header/app-nav.controller.js
?   ?   ?   ?   ??? ./src/app/common/header/app-nav.html
?   ?   ?   ?   ??? ./src/app/common/header/index.js
?   ?   ?   ??? ./src/app/common/index.js
?   ?   ?   ??? ./src/app/common/sideBar
?   ?   ?       ??? ./src/app/common/sideBar/app-sidebar.component.js
?   ?   ?       ??? ./src/app/common/sideBar/app-sidebar.controller.js
?   ?   ?       ??? ./src/app/common/sideBar/app-sidebar.html
?   ?   ?       ??? ./src/app/common/sideBar/index.js
?   ?   ??? ./src/app/components
?   ?   ?   ??? ./src/app/components/auth
?   ?   ?   ?   ??? ./src/app/components/auth/auth-form
?   ?   ?   ?   ?   ??? ./src/app/components/auth/auth-form/auth-form.component.js
?   ?   ?   ?   ?   ??? ./src/app/components/auth/auth-form/auth-form.controller.js
?   ?   ?   ?   ?   ??? ./src/app/components/auth/auth-form/auth-form.html
?   ?   ?   ?   ?   ??? ./src/app/components/auth/auth-form/index.js
?   ?   ?   ?   ??? ./src/app/components/auth/auth.service.js
?   ?   ?   ?   ??? ./src/app/components/auth/auth.user.js
?   ?   ?   ?   ??? ./src/app/components/auth/index.js
?   ?   ?   ?   ??? ./src/app/components/auth/login
?   ?   ?   ?   ?   ??? ./src/app/components/auth/login/index.js
?   ?   ?   ?   ?   ??? ./src/app/components/auth/login/login.component.js
?   ?   ?   ?   ?   ??? ./src/app/components/auth/login/login.controller.js
?   ?   ?   ?   ?   ??? ./src/app/components/auth/login/login.html
?   ?   ?   ?   ??? ./src/app/components/auth/register
?   ?   ?   ?       ??? ./src/app/components/auth/register/index.js
?   ?   ?   ?       ??? ./src/app/components/auth/register/register.component.js
?   ?   ?   ?       ??? ./src/app/components/auth/register/register.controller.js
?   ?   ?   ?       ??? ./src/app/components/auth/register/register.html
?   ?   ?   ??? ./src/app/components/index.js
?   ?   ??? ./src/app/root.component.js
?   ?   ??? ./src/app/root.html
?   ?   ??? ./src/app/root.module.js
?   ??? ./src/index.ejs
??? ./webpack.config.js

Estus Flask.. 9

应该导入文件(或者更确切地说,required,因为应用程序依赖于CommonJS模块)以便执行它.

在第一个片段root.module.js中不包含require('./root.component'),因此root.component.js永远不会执行.

它应该是

//root.module.js
module.exports = anglar
  .module('root', [
    require('./common').name,
    require('./components').name
  ])
  .component('root', require('./root.component'));

require('./root.component');

请注意,在定义模块root.component.js后应该要求root,以相反的顺序执行这些操作将导致$injector:modulerr错误.

消除竞争条件和利用模块化的成熟方法是每个文件有一个Angular模块.在这种情况下,文件所需的顺序无关紧要.传统的方法是name从包含Angular模块的文件中导出和导入模块的属性:

//root.component.js
module.exports = angular.module('root.rootComponent', [])
  .component('root', {
    template: require('./root.html')
  })
  .name;

//root.module.js
var rootCompOnentModule= require('./root.component');
var commOnModule= require('./common');
var compOnentsModule= require('./components');

module.exports = angular
    .module('root', [
        rootComponentModule,
        commonModule,
        componentsModule
    ])
    .name;

该配方允许维持高度模块化单元的良好排列的深层次结构.这有利于代码重用和测试.



1> Estus Flask..:

应该导入文件(或者更确切地说,required,因为应用程序依赖于CommonJS模块)以便执行它.

在第一个片段root.module.js中不包含require('./root.component'),因此root.component.js永远不会执行.

它应该是

//root.module.js
module.exports = anglar
  .module('root', [
    require('./common').name,
    require('./components').name
  ])
  .component('root', require('./root.component'));

require('./root.component');

请注意,在定义模块root.component.js后应该要求root,以相反的顺序执行这些操作将导致$injector:modulerr错误.

消除竞争条件和利用模块化的成熟方法是每个文件有一个Angular模块.在这种情况下,文件所需的顺序无关紧要.传统的方法是name从包含Angular模块的文件中导出和导入模块的属性:

//root.component.js
module.exports = angular.module('root.rootComponent', [])
  .component('root', {
    template: require('./root.html')
  })
  .name;

//root.module.js
var rootCompOnentModule= require('./root.component');
var commOnModule= require('./common');
var compOnentsModule= require('./components');

module.exports = angular
    .module('root', [
        rootComponentModule,
        commonModule,
        componentsModule
    ])
    .name;

该配方允许维持高度模块化单元的良好排列的深层次结构.这有利于代码重用和测试.


推荐阅读
  • .NetCoreWebApi生成Swagger接口文档的使用方法
    本文介绍了使用.NetCoreWebApi生成Swagger接口文档的方法,并详细说明了Swagger的定义和功能。通过使用Swagger,可以实现接口和服务的可视化,方便测试人员进行接口测试。同时,还提供了Github链接和具体的步骤,包括创建WebApi工程、引入swagger的包、配置XML文档文件和跨域处理。通过本文,读者可以了解到如何使用Swagger生成接口文档,并加深对Swagger的理解。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
author-avatar
好学的程序员
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有