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 相关文章推荐
IE不出现Flash激活框的小发现的js实现方法
Sep 07 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
Dec 08 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
Jul 24 Javascript
JavaScript中的console.dir()函数介绍
Dec 29 Javascript
Javascript基础教程之argument 详解
Jan 18 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
Oct 13 Javascript
10道典型的JavaScript面试题
Mar 22 Javascript
微信小程序之网络请求简单封装实例详解
Jun 28 Javascript
小程序实现选择题选择效果
Nov 04 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
Jan 08 Javascript
微信小程序监听用户登录事件的实现方法
Nov 11 Javascript
vue调用本地摄像头实现拍照功能
Aug 14 Javascript
详解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
通过文字传递创建的图形按钮
2006/10/09 PHP
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
如何判断php数组的维度
2013/06/10 PHP
php使用PDO执行SQL语句的方法分析
2017/02/16 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
基于jquery实现全屏滚动效果
2015/11/26 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python使用多线程不断刷新网页的方法
2015/03/31 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
css3中仿放大镜效果的几种方式原理解析
2020/12/03 HTML / CSS
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
警察思想汇报
2014/01/04 职场文书
本科生的职业生涯规划范文
2014/01/09 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
大学生社会实践活动总结报告
2015/05/06 职场文书
加薪申请报告范本
2015/05/15 职场文书
闪闪的红星观后感
2015/06/08 职场文书
我收到了德劲DE1107
2022/04/05 无线电