基于webpack 和 vue的单页面网站有哪些

 我来答
DoramiHe
2017-03-20 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25332 获赞数:59543
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
1. 定义我们demo的基本目录
├── README.md
├── index.html // 项目入口文件
├── package.json // 项目配置文件
├── src // 生产目录
│ ├── vue // 组件
│ | ├──home.vue
│ | ├──blog.vue
│ | ├──about.vue
│ | ├──topic.vue
│ ├── components // 各种组件
│ ├── views // css文件
│ ├── scss //scss文件
│ └── main.js // Webpack 预编译入口
└── webpack.js // Webpack 配置文件

2. 配置一下我们的webpack.js文件
在介绍怎么配置之前你需要掌握一个命令 npm install <模块> --save-dev这个命令的意思是这个命名的意思是我们安装了这个包并且把它的基本信息写入目录的package.json文件。还有一个命令是我们直接运行cnpm install会自动下载package.json里面写入的包.
在webpack的配置文件我们需要用到四个npm的模块分别是:path,webpack,extract-text-webpack-plugin,vue-loader记得先下载包在用require命令引入进来
//node的路径模块
var path=require('path');
//我们是webpack当然要引入这个
var webpack = require('webpack');
//这个是构建页面资源的插件
var ExtractTextPlugin = require('extract-text-webpack-plugin');
//因为我们是vue.js的应用,把各个组件当做一个页面.vue后缀,所以引入这个可以编译这些文件
var vue = require("vue-loader");

好了,我们已经把需要的模块引入进来了,接下来我们定义一些接下来要用到的一些文件夹路径
//__dirname是node里面的一个变量,指向的是当前文件夹目录
var ROOT_PATH = path.resolve(__dirname);
//这个我们的文件入口,等下我们就会从main.js这个文件作为入口
var APP_PATH = path.resolve(ROOT_PATH, 'src/main.js');
//这个是文件打包出来的输出路径
var BUILD_PATH = path.resolve(ROOT_PATH, 'build');

基本的文件路径我们已经定义好了,接下来我们要用到extract-text-webpack-plugin这个插件了
var plugins = [
//提公用js到common.js文件中
new webpack.optimize.CommonsChunkPlugin('common.js'),
//将样式统一发布到style.css中
new ExtractTextPlugin("style.css"),
// 使用 ProvidePlugin 加载使用率高的依赖库
new webpack.ProvidePlugin({
$: 'webpack-zepto'
})
];

接下来是webpack的重点了loader,webpack的思想是把每个静态资源文件当做一个模块加载,我们需要做一些配置,在这里我们需要用到编译css,sass模块,多以我们还需要安装'css-loader','style-loader','node-sass','md5'
module.exports = {
//文件的入口,还可以写成多数组的形式,具体自己扩展
entry:[APP_PATH],
//输出
output:{
//输出路径
path: BUILD_PATH,
//打包的js命名
filename:build.js'
// 指向异步加载的路径
publicPath : __dirname + '/build/',
// 非主文件的命名规则,加缓存用到md5
chunkFilename: '[id].build.js?[chunkhash]'
},
module: {
loaders: [
{
test: /\.vue$/,
loader: 'vue',
},
{
test: /\.scss$/,
loader: ExtractTextPlugin.extract("style-loader", 'css-loader')
},
{
test: /\.css$/,
loader: ExtractTextPlugin.extract("style-loader", "css-loader")
},
{
test: /\.(png|jpg)$/,
loader: 'url?limit=40000'
}
]
},
//这个特别说明下,vue提倡把一个组件当做一个页面,所以可能在一个页面写html,style,javascript,也可以引入和写scss文件
vue: {
css: ExtractTextPlugin.extract("css"),
sass: ExtractTextPlugin.extract("css!sass-loader")
},
plugins: plugins
}

3. 配置我们的入口文件main.js
这里我们需要三个npm模块,vue,vue-router,vue-resource三个模块,我们依次安装然后在引入
//vue的应用当然要引,等下要用它来注册
var Vue = require('vue')
//这个是路由,spa应用必要哦
var VueRouter = require('vue-router');
//这个是类似ajax请求,肯定要拉去数据啦,所以也下载吧
var VueResource = require('vue-resource');

在vue里面声明并注册个空组件
Vue.use(VueRouter);
Vue.use(VueResource);
var app = Vue.extend({});

实例化VueRounter
var router = new VueRouter({
// 当hashbang的值为true时,所有的路径都会被格式化已#!开头,
hashbang: true,
history: false,
saveScrollPosition: true,
transitionOnLoad: true
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式