一 vue-loader

我们先不管脚手架,只说vue-loader,简单讲就是可将.vue文件打包,实现组件化开发,即一个.vue文件就是一个组件,开发中只需要引入这个.vue组件就可以了!

然后.vue文件的特性:

,

即一个.vue中包含了模板,js,css三个模块来描述这个组件!

二 新建webpack项目(超级多坑,一一来说)

首先新建demo目录,初始化 npm init --yes,然后安装webpack和webpack-dev-server,因为我这里没有指定版本,所以直接安装了最新的4.5.0版本,导致有许多配置的坑!,然后建立项目结构,如下图:

,

然后安装一些必要的组件:

vue-loader@14.2.2  ,这个我在实践中先安装的8.5.4,然后一直报错无法读取'vue',文件错误显示是vue-loader/lib下面的js,根据经验肯定是版本不对导致了,

这个时候两种解决办法:

一 要么修改webpack的版本,

二 要么修改vue-loader的版本

这里我采用修改vue-loader的版本,亲测如果是webpack@4.5.0,vue-loader@14.2.2.其他版本基本全部报错,真是坑!

然后就是其他的laoder:

,然后还有一点,如果是想用import的话还要安装babel:

,

最后--save安装vue,注意前面的最好都要--save-dev安装,然后再安装html-webpack-plugin插件便于html打包

三 webpack配置

配置如下:

const path=require('path')
const htmlPlugin=require('html-webpack-plugin')
module.exports={
entry:{
entry:'./src/index.js' //入口文件
},
output:{
path:path.resolve(__dirname,'dist'),//dist的绝对路径,node的语法
filename:'./js/[name].js', //打包后的js文件名
},
resolve: {
extensions: [ '.js', '.vue'], //同时打包.vue文件
alias:{
'vue$':'vue/dist/vue.js' //启用别名,这样可以直接引用 'vue'
}
},
module:{
rules:[
//配置vue-loader,以,vue结尾的文件都使用vue-loader打包
{
test:/\.vue$/,
use:{
loader:'vue-loader'
}
},
//配置babel,所有.js文件使用babel转换
{
test:/\.js$/,
use:{
loader:'babel-loader',
options:{
presets:[
"es2015" //解析es6
]
}
},
//排除插件安装目录
exclude: /node_modules|vue\/dist|vue-router\/|vue-loader\/|vue-hot-reload-api\//
}
]
},
//html打包插件
plugins:[
new htmlPlugin({
hash:true,
template:'./src/index.html'
})
],
devServer:{
//监听服务的路径,3.6以上版本自动热更新
contentBase:path.resolve(__dirname,'dist'),
host:'localhost',
compress:true,
port:8082
}
}

配置完成之后,新建.vue组件文件,然后简单写个例子:

这里有个坑:

,

不能直接写123,template标签里面必须写一个元素标签包裹,否则会报错

新建之后再引入,index.js入口文件如下:

import Vue from 'vue'
import App from './App.vue' //引入,vue组件
new Vue({
el:'#vue',
data:{
msg:'haha'
},
components:{
'app':App //引入模块化的.vue文件的组件
}
});
{
alert(123);
}

这里还有另一个坑,引入vue的时候现在这个版本好像不能直接'vue',而是'vue/dist/vue.js',除非在配置文件中配置别名,我上面已经配置过了,所以这里可以直接使用别名

,然后新建html:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>vue</title>
</head>
<body>
<div id="vue">
{{msg}}
<app></app>
</div>
</body>
</html>

,最后打包进行观察结果,发现.vue已经能成功使用,如果我们还想要一个组件,可以继续新建.vue组件开发,一个组件就是一个模块!抛开脚手架不说,这种开发方式和思想值得细细品味,哈哈!这个简单例子就到这里,其他的css样式什么的可以自己去尝试!

另外说一点,webpack3.6以上的版本会自动支持热更新,不需要其他配置,4.0以上版本,打包和运行命令多了一个--mode选项,而且是必须写:

即现在package.json的命令里我是这样配置的:

"scripts": {
  "server": "webpack-dev-server --mode development --open",
  "build": "webpack --mode development"
},
npm run server 直接运行
npm run  build; 打包!
运行结果:

webpack4.5.0+vue2.5.16+vue-loader 实战组件化开发案例以及版本问题中踩的一些大坑!!!的更多相关文章

  1. Vue 入门之组件化开发

    Vue 入门之组件化开发 组件其实就是一个拥有样式.动画.js 逻辑.HTML 结构的综合块.前端组件化确实让大的前端团队更高效的开发前端项目.而作为前端比较流行的框架之一,Vue 的组件和也做的非常 ...

  2. Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结和踩坑

    本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.写在前面 项目上线有一段时间了,一个基于webpack+vue+ES6的手机端多页面应用 ...

  3. Webpack+Vue+ES6 前端组件化开发mobile-multi-page应用实战总结

    本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.写在前面 项目上线有一段时间了,一个基于webpack+vue+ES6的手机端多页面应用 ...

  4. vue.js原生组件化开发(一)——组件开发基础

    前言 vue作为一个轻量级前端框架,其核心就是组件化开发.我们一般常用的是用脚手架vue-cli来进行开发和管理,一个个组件即为一个个vue页面,这种叫单文件组件.我们在引用组件之时只需将组件页面引入 ...

  5. vue.js原生组件化开发(二)——父子组件

    前言 在了解父子组件之前应先掌握组件开发基础.在实际开发过程中,组件之间可以嵌套,也因此生成父子组件. 父子组件创建流程 1.构建父子组件 1.1 全局注册 (1)构建注册子组件 //构建子组件chi ...

  6. vue(9)—— 组件化开发 - webpack(3)

    前面两个终于把webpack相关配置解析完了.现在终于进入vue的开发了 vue组件化开发预热 前期准备 创建如下项目: app.js: footer.js: main.js: webpack.con ...

  7. webpack(8)vue组件化开发的演变过程

    前言 真实项目开发过程中,我们都是使用组件化的去开发vue的项目,但是组件化的思想又是如何来的呢?下面就从开始讲解演变过程 演变过程1.0 一般情况下vue都是单页面开发,所以项目中只会有一个inde ...

  8. vue.js组件化开发实践

    前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎么实现,技术选型自然 ...

  9. vue组件化开发实践

    前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了一下的内容.首先会对使用Vue进行开发的一些前期需要的技术储备进行简单 ...

随机推荐

  1. T4扩展程序

    T4功能强大,不用简直就是浪费青春.vs是没有自带对T4模板编辑的扩展的,写着很累很累(我很low我承认) 这两个驯兽师能帮你驯服它 Devart T4 Editor T4 Toolbox

  2. tensorflow环境下安装scikit-learn

    1. scikit-learn所依赖的环境: python(>=2.6 or >=3.3) numpy(>=1.6.1) scipy(>=0.9) 可用conda list 查 ...

  3. C++模式学习------模板模式

    模板模式: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模板模式是一种很常用的模式,在很多的框架或者基类重载的时候都 ...

  4. Qt——线程类QThread

    本文主要介绍Qt中线程类QThread的用法,参考(翻译+修改)了一篇文章:PyQt: Threading Basics Tutorial,虽然使用的是PyQt,但与C++中Qt的用法大同小异,不必太 ...

  5. BZOJ5291 BJOI2018链上二次求和(线段树)

    用线段树对每种长度的区间维护权值和. 考虑区间[l,r]+1对长度为k的区间的贡献,显然其为Σk-max(0,k-i)-max(0,k-(n-i+1)) (i=l~r). 大力展开讨论.首先变成Σk- ...

  6. DSU模板(树的启发式合并)

    摘自Codeforces博客 With dsu on tree we can answer queries of this type: How many vertices in subtree of ...

  7. spark 调优——基础篇

    开发调优 调优概述 Spark性能优化的第一步,就是要在开发Spark作业的过程中注意和应用一些性能优化的基本原则.开发调优,就是要让大家了解以下一些Spark基本开发原则,包括:RDD lineag ...

  8. 【Asp.net入门06】第一个ASP.NET 应用程序-案例说明

    创建简单的应用程序 本章的剩余部分将探讨一些用于创建简单的数据输入应用程序的基本ASP.NET功能.在这一节中,我们将加快进度——目标是演示ASP.NET的用法,因此将略过有关后台运行机制的详细说明. ...

  9. 【Asp.net入门01】动态网站基础知识

    本节将介绍: 网站搭建流程 动态网站相关基础概念 网页的访问原理 使用浏览器访问网站是我们几乎天天在做的事情.以前我们只需要关注网页内容,作为网站开发人员,从现在开始我们要关注更深层次的东西了. 1. ...

  10. Kubernetes Pod 健康检查

    参考文档: https://jimmysong.io/kubernetes-handbook/guide/configure-liveness-readiness-probes.html 一.Pod的 ...