详解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 相关文章推荐
通过JS 获取Mouse Position(鼠标坐标)的代码
Sep 21 Javascript
JavaScript获取多个数组的交集简单实例
Nov 11 Javascript
js获取json元素数量的方法
Jan 27 Javascript
Jquery实现纵向横向菜单
Jan 24 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
May 05 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 Javascript
Node.js操作redis实现添加查询功能
May 25 Javascript
关于使用js算总价的问题
Jun 23 Javascript
jquery select插件异步实时搜索实例代码
Oct 20 jQuery
浅谈React组件之性能优化
Mar 02 Javascript
vue中keep-alive组件的入门使用教程
Jun 06 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
Nov 04 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的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
jquery实现的让超出显示范围外的导航自动固定屏幕最顶上
2011/09/22 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
Vue基础配置讲解
2019/11/29 Javascript
Vue export import 导入导出的多种方式与区别介绍
2020/02/12 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
Python 学习笔记
2008/12/27 Python
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
Python使用re模块验证危险字符
2020/05/21 Python
如何基于Python爬虫爬取美团酒店信息
2020/11/03 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
《老山界》教学反思
2014/04/08 职场文书
抵押贷款承诺书
2014/05/30 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
Oracle使用别名的好处
2022/04/19 Oracle