• Angular-Cli中引用第三方库


    最近在学习angular(AngularJS 2),根据教程使用angular-cli新建项目,
    然而在添加JQuery和Bootstrap第三方库时遇到了问题...

    初试

    我最初的想法是直接将相对路径写到index.html即可,如下:

    <link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css" />
    <script type="text/javascript" src="../node_modules/jquery/dist/jquery.min.js"/>
    <script type="text/javascript" src="../node_modules/bootstrap/dist/js/bootstrap.min.js"/>
    

    然鹅。。。并不好使,浏览器抓包会显示请求
    http://localhost:4200/node_modules/juqery/dist/jquery.min.js返回404错误,
    bootstrap也是相同的问题,这里显然是路径不正确,我的项目目录结构如下:

    angular-form/
        |- src/
        |   |- app/
        |   |- index.html
        |   ...
        |- node_modules
        |   |- jquery/
        |   |- bootstrap/
        |   ...
    

    其中,网站运行时的根目录是src目录,
    所以获取不到与其处在同一目录的node_modules目录下文件也在情理之中...

    另辟蹊径

    经过乱七八糟的查找...发现了可以在/.angular-cli.json文件中配置脚本引用,
    在其app.scripts下配置要添加的脚本,
    并在app.styles下配置要添加的样式文件:

    "app": [
        {
            ...
            "styles": [
                "node_modules/bootstrap/dist/css/bootstrap.min.css"
            ],
            "scripts": [
                "node_modules/bootstrap/dist/css/bootstrap.min.css",
                "node_modules/bootstrap/dist/css/bootstrap.min.css"
            ],
            ...
        }
    ]
    

    再次启动网站,却连编译都无法通过...出现如下问题:

    ERROR in multi script-loader!./src/~/jquery/dist/jquery.min.js script-loader!./src/~/bootstrap/dist/js/bootstrap.min.js
    Module not found: Error: Can't resolve 'E:CodeJavaScriptangular2angular-formssrc
    ode_modulesjquerydistjquery.min.js' in 'E:CodeJavaScriptangular2angular-forms'
     @ multi script-loader!./src/~/jquery/dist/jquery.min.js script-loader!./src/~/bootstrap/dist/js/bootstrap.min.js
    

    可以看出这里去加载js脚本时寻找的是src/目录下的node_modules目录,
    所以加载失败。这意味着angular-cli.json文件中配置的路径时相对于网站根目录的路径,
    接着做如下更改:

    "app": [
        {
            ...
            "styles": [
                "../node_modules/bootstrap/dist/css/bootstrap.min.css"
            ],
            "scripts": [
                "../node_modules/bootstrap/dist/css/bootstrap.min.css",
                "../node_modules/bootstrap/dist/css/bootstrap.min.css"
            ],
            ...
        }
    ]
    

    再次运行网站,成功加载~~~

    回看来时路

    后来了解到,angular-cli的项目使用webpack来将模块打包,
    我们这里配置的scriptsstyles会被打包成scripts.bundle.js
    styles.bundle.js文件加载到前台页面,而后就阔以正常使用这些第三方库了~~~

    参考链接:

    http://stackoverflow.com/questions/38855891/angular-cli-webpack-how-to-add-or-bundle-external-js-files
    https://www.sitepoint.com/ultimate-angular-cli-reference/

  • 相关阅读:
    Django Model数据访问Making queries
    Tomcat 7源码学习笔记 -5 web app自动reload
    tomcat启动提示server.xml的context节点中不支持source属性警告的解决方法
    javaweb学习总结(三十九)——数据库连接池
    共享文件系统
    高可用+负载均衡 方案
    Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨
    Java对象序列化给分布式计算带来的方便
    JAVABEAN必须继承序列化借口的作用
    keep-alive pipeline区别
  • 原文地址:https://www.cnblogs.com/baiyangcao/p/angular-cli-json.html
Copyright © 2020-2023  润新知