详解Angular-Cli中引用第三方库


Posted in Javascript onMay 21, 2017

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

初试

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

<link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="external nofollow" />
<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:\Code\JavaScript\angular2\angular-forms\src\node_modules\jquery\dist\jquery.min.js' in 'E:\Code\JavaScript\angular2\angular-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文件加载到前台页面,而后就可以正常使用这些第三方库了~~~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery.fn和jQuery.prototype区别介绍
Oct 05 Javascript
基于iframe实现类似于ajax的页面无刷新
May 31 Javascript
js实现正方形颜色从下往上升的效果
Aug 04 Javascript
AngularJS学习笔记之基本指令(init、repeat)
Jun 16 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
Jun 26 Javascript
d3.js实现简单的网络拓扑图实例代码
Nov 06 Javascript
javascript 初学教程及五子棋小程序的简单实现
Jul 04 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
Mar 13 Javascript
vue 项目地址去掉 #的方法
Oct 20 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
Dec 12 Javascript
JavaScript中的 new 命令
May 22 Javascript
基于原生js实现九宫格算法代码实例
Jul 03 Javascript
Angular2安装angular-cli
May 21 #Javascript
Angular2使用Augury来调试Angular2程序
May 21 #Javascript
Angular2使用Angular-CLI快速搭建工程(二)
May 21 #Javascript
Angular2使用Angular CLI快速搭建工程(一)
May 21 #Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
May 20 #jQuery
node.js 中间件express-session使用详解
May 20 #Javascript
JS 调试中常见的报错问题解决方法
May 20 #Javascript
You might like
社区(php&amp;&amp;mysql)三
2006/10/09 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
jQuery 使用手册(二)
2009/09/23 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
Javascript Objects详解
2014/09/04 Javascript
javascript中var的重要性分析
2015/02/11 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
浅谈Vue中render中的h箭头函数
2019/11/07 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
[01:03:36]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第二场 1月26日
2021/03/11 DOTA
Python转码问题的解决方法
2008/10/07 Python
Python中实现对list做减法操作介绍
2015/01/09 Python
python模块之re正则表达式详解
2017/02/03 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
python多线程分块读取文件
2019/08/29 Python
使用Python完成15位18位身份证的互转功能
2019/11/06 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
幼儿园门卫制度
2014/01/29 职场文书
党员公开承诺书
2014/03/25 职场文书
学生会干部任命书
2015/09/21 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python