详解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的MessageBox
Dec 03 Javascript
javascript中方便增删改cookie的一个类
Oct 11 Javascript
jquery队列函数用法实例
Dec 16 Javascript
JavaScript转换与解析JSON方法实例详解
Nov 24 Javascript
详解JavaScript RegExp对象
Feb 04 Javascript
在vue项目中引入highcharts图表的方法(详解)
Mar 05 Javascript
vue使用Google地图的实现示例代码
Dec 19 Javascript
微信小程序webview实现长按点击识别二维码功能示例
Jan 24 Javascript
完美解决通过IP地址访问VUE项目的问题
Jul 18 Javascript
原生js实现分页效果
Sep 23 Javascript
如何构建一个Vue插件并生成npm包
Oct 26 Javascript
vue3.0 项目搭建和使用流程
Mar 04 Vue.js
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
Terran兵种介绍
2020/03/14 星际争霸
php json_encode奇怪问题说明
2011/09/27 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
JS event使用方法详解
2008/04/28 Javascript
JS IE和FF兼容性问题汇总
2009/02/09 Javascript
JavaScript 常用函数库详解
2009/10/21 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
分类解析jQuery选择器
2016/11/23 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
[03:49]DOTA2英雄基础教程 光之守卫
2014/01/14 DOTA
Python判断操作系统类型代码分享
2014/11/22 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
女方婚礼新郎答谢词
2014/01/11 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
抽样调查项目计划书
2014/04/24 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js