vue 项目常用加载器及配置详解


Posted in Javascript onJanuary 22, 2018

本文介绍了vue 项目常用加载器及配置详解,分享给大家,具体如下:

1.安装sass:

1.1 由于sass-loader依赖于node-sass,所以在安装sass-loader的同时还需安装node-sass

npm install --save-dev node-sass
npm install --save-dev sass-loader

1.2 安装完成后修改 <style>标签:

<style lang="scss"></style>

2.安装axios:

axios用于数据请求,在Vue1.0的时候有一个官方推荐的 ajax 插件 [vue-resource](https://github.com/pagekit/vue-resource),但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource,推荐使用axios。

2.1 安装:

npm install axios --save-dev

2.2. 在main.js中引入:

import axios from 'axios'
Vue.prototype.$http = axios

2.3. 在组件中使用:

this.$http({
  method:'get',
  url:'http://breadoffer.com/api/artcile',
  params:{
   platformCode:'pc'   // 用于向后台传参
  }
}).then(response => {
  console.log(response)
})

3.安装mock:

3.1. 安装:

npm install mockjs --save-dev

3.2. 使用:在src下新建mock.js文件

import Mock from 'mockjs';

export default Mock.mock('http://platform.breadoffer.com/api/oversea', {
 "data":{
  "breadActivities|9":[{
   "title":"@csentence(5,25)",
   "desc":"@paragraph(2)",
   "beiginTime":"@date",
   "endTime":"@date",
   "stateName":"进行中",
  }],
 }
})

3.3. 在需要数据的组件中引入:

import datas from '../mock' // 根据自己实际目录引入

 methods: {
  request() {
  this.$http({
   method: 'get',
   url: 'http://platform.breadoffer.com/api/oversea',
   params: {
   courseMaxCount: 2,  //设置课程返回的数据为2条
   teacherMaxCount: 10, //设置导师返回的数据为10条
   }
  }).then(response => {
   console.log(response)
  }).catch(error => {
    console.log(error)
  })
  },
 }

4.安装 lib-flexible: --实现移动端自适应

4.1 安装:

npm install lib-flexible --save

在实际开发过程中,使用flexible插件时会自动把px转换成rem单位,在vue项目中我们使用px2rem这个工具进行转换,所以需要安装px2rem加载器:

npm install px2rem-loader

4.2 在main.js中引入:

import 'lib-flexible'

4.3 配置px2rem-loader: (在build/untils.js)

remUnit 的意思是1rem=多少像素, 结合lib-flexible,我们将px2remLoader的option.remUnit 设置成设计稿宽度的1/10,假设我们的设计稿宽度是750,则remUnit为75,然后在cssLoader后面加一个px2remLoader即可

var px2remLoader = {
 loader: 'px2rem-loader',
 options: {
  remUnit: 75
 }
 }

 // generate loader string to be used with extract text plugin
 function generateLoaders (loader, loaderOptions) {
 const loaders = [cssLoader,px2remLoader]
 if (loader) {
  loaders.push({
  loader: loader + '-loader',
  options: Object.assign({}, loaderOptions, {
   sourceMap: options.sourceMap
  })
  })
 }

5.安装 sass-resourses-loader

如果在项目中使用sass,或多或少会用到全局的变量,mixin/function等,那么如何将其设为全局状态,以避免在每个vue文件中引入?

5.1 安装 sass-resources-loader:

npm i sass-resources-loader

5.2 在main.js中引入

import 'lib-flexible'

5.3 配置px2rem-loader: (在build/untils.js)

在文件中找到这句注释

// [https://vue-loader.vuejs.org/en/configurations/extract-css.html](https://vue-loader.vuejs.org/en/configurations/extract-css.html)

在注释上面添加如下函数:

function resolveResouce(name) {
  return path.resolve(__dirname, '../src/sass/' + name);  // sass文件所在目录
 }

 function generateSassResourceLoader() {
  var loaders = [
   cssLoader,
   // 'postcss-loader',
   'sass-loader',
   {
    loader: 'sass-resources-loader',
    options: {
     // it need a absolute path
     resources: [resolveResouce('_mixin.scss')]
    }
   }
  ];
  if (options.extract) {
   return ExtractTextPlugin.extract({
    use: loaders,
    fallback: 'vue-style-loader'
   })
  } else {
   return ['vue-style-loader'].concat(loaders)
  }
 }

并且将以下代码

// return {
 // css: generateLoaders(),
 // postcss: generateLoaders(),
 // less: generateLoaders('less'),
 // sass: generateLoaders('sass', { indentedSyntax: true }),
 // scss: generateLoaders('sass'),
 // stylus: generateLoaders('stylus'),
 // styl: generateLoaders('stylus')
 // }

替换为:

return {
  css: generateLoaders(),
  postcss: generateLoaders(),
  less: generateLoaders('less'),
  sass: generateSassResourceLoader(),
  scss: generateSassResourceLoader(),
  stylus: generateLoaders('stylus'),
  styl: generateLoaders('stylus')
 }

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

Javascript 相关文章推荐
javascript prototype,executing,context,closure
Dec 24 Javascript
JQuery给元素添加/删除节点比如select
Apr 02 Javascript
js判断横竖屏及禁止浏览器滑动条示例
Apr 29 Javascript
webapp框架AngularUI的demo改造之路
Dec 21 Javascript
微信小程序 向左滑动删除功能的实现
Mar 10 Javascript
深入理解Vue transition源码分析
Jul 30 Javascript
AngularJS 实现购物车全选反选功能
Oct 24 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
Dec 05 Javascript
jQuery与vue实现拖动验证码功能
Jan 30 jQuery
Vue.js进阶知识点总结
Apr 01 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
Oct 26 Javascript
vue项目如何监听localStorage或sessionStorage的变化
Jan 04 Vue.js
详解vue+vuex+koa2开发环境搭建及示例开发
Jan 22 #Javascript
jquery+ajaxform+springboot控件实现数据更新功能
Jan 22 #jQuery
bootstrap+jquery项目引入文件报错的解决方法
Jan 22 #jQuery
angular写一个列表的选择全选交互组件的示例
Jan 22 #Javascript
vue-router 组件复用问题详解
Jan 22 #Javascript
详解webpack多页面配置记录
Jan 22 #Javascript
详解html-webpack-plugin用法全解
Jan 22 #Javascript
You might like
PHP IPV6正则表达式验证代码
2010/02/16 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
AngularJS表单编辑提交功能实例
2015/02/13 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
Vue+element-ui 实现表格的分页功能示例
2018/08/18 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
python多任务及返回值的处理方法
2019/01/22 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
怎样声明子类
2013/07/02 面试题
制药工程专业应届生求职信
2013/09/24 职场文书
监察建议书格式
2014/05/19 职场文书
七年级作文之雪景
2019/11/18 职场文书
修改并编译golang源码的操作步骤
2021/07/25 Golang
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js