github 地址 https://github.com/wangxiaoxi...

webpakc+vue的搭建
1.新建项目文件夹(see-films);
2.npm init //初始化项目
3.搭建webpack的基本框架

const path = require("path");
const webpack = require("webpack");
module.exports = {
entry:{
entry:"./src/entry.js"
},
output:{
path:path.resolve( __dirname,"dist" ),
filename:"[name].js"
},
module:{ },
plugins:[ ],
devServer:{ }
};

同时安装依赖

npm i -D webpack(版本号4.14.0)
npm i -D webpack-cli

4.webpack的热更新

npm i -D webpack-dev-server
devServer:{
contentBase:path.resolve( __dirname,"dist" ),
host:"127.0.0.1",
compress:true,
port:9001
}

创建一个src文件夹,创建一个entry.js文件测试能否打包,发现报错 缺少mode
在webpacl.config.js文件里面的入口entry上面加上mode:"development",现在先是在本地跑起来,如果是生产环境的话mode:"production",此时再进行打包----打包成功。第一步完成。

5.安装模板文件依赖
npm i -D html-webpack-plugin
在webpack.config.js文件中的plugins中
plugins:[

    new htmlPlugin({
minify:{
removeAttributeQuotes:true
},
hash:true,
template:"./src/index.html"
})
]

在src文件夹下面创建index.html
然后webpack测试能否打包成功
此时的目录结构是这样子的!

图片描述

6.vue的搭建!!!

根目录新建文件夹client
创建文件 main.js和App.vue
在根目录创建index.html
然后修改webpack.config.js文件中的入口和plugin插件的模板

并安装依赖
npm i -S vue
npm i -D vue-template-complier
npm i -D extract-text-webpack-plugin
npm i -D vue-loader vue-style-loader css-loader

此时的webpack.config.js是这样的

const path = require("path");
const webpack = require("webpack");
const htmlPlugin = require("html-webpack-plugin");
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
module.exports = {
mode:"development",
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js'
}
},
entry:{
entry:"./client/main.js",
vue:"vue"
},
output:{
path:path.resolve( __dirname,"dist" ),
filename:"[name].js"
},
module:{
rules:[
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
loaders: {
css: ExtractTextPlugin.extract({
use: {loader: 'css-loader'},
fallback: 'vue-style-loader'
})
}
}
}
]
},
plugins:[
new htmlPlugin({
minify:{
removeAttributeQuotes:true
},
hash:true,
template:"./index.html"
}),
new VueLoaderPlugin(),
new ExtractTextPlugin("css/index.css")
],
devServer:{
contentBase:path.resolve( __dirname,"dist" ),
host:"127.0.0.1",
compress:true,
port:9001
}
};

到此处就是一个最基础的vue架构;
此时的目录结构如下
图片描述

看到这里,相信你也测试过,然后发现有个问题,就是在.vue文件里面的style中对样式进行修改会报错,原因是webpack4.x版本得使用mini-css-extract-plugin代替原来的extract-text-webpack-plugin,修改之后如下

const path = require("path");
const webpack = require("webpack");
const htmlPlugin = require("html-webpack-plugin");
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin"); module.exports = {
devtool:"cheap-module-eval-source-map",
mode:"development",
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js'
}
},
entry:{
entry:"./client/main.js",
vue:"vue"
},
output:{
path:path.resolve( __dirname,"dist" ),
filename:"[name].js",
publicPath:"http://127.0.0.1:9001/"
},
module:{
rules:[
{
test: /\.js$/,
use: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.css$/,
use:[
MiniCssExtractPlugin.loader,
{
loader: 'css-loader?modules=false',
options: {
importLoaders: 1,
minimize: true
}
}
]
},
{
test: /\.vue$/,
loader: 'vue-loader'
}
]
},
plugins:[
new htmlPlugin({
minify:{
removeAttributeQuotes:true
},
hash:true,
template:"./index.html"
}),
new VueLoaderPlugin(),
new MiniCssExtractPlugin({
filename: "[name].css",
chunkFilename: "[id].css"
})
],
devServer:{
contentBase:path.resolve( __dirname,"dist" ),
host:"127.0.0.1",
compress:true,
port:9001
}
};

7.VUE热更新

只需要安装vue-hot-reload-api依赖 配合就能够轻松实现。

8.VUE路由

安装vue-router 然后修改main.js如下,并在同层目录生成router.config.js,此时的就能根据你的喜好去建立路由了。

import Vue from 'vue';
import App from './App'; import VueRouter from 'vue-router';
Vue.use(VueRouter);
import routes from './router.config.js';
const router = new VueRouter({
routes: routes
}); new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})

9.KOA的引入和基础测试

const Koa = require('koa');
const Rrouter = require('koa-router');
const cors = require('koa2-cors'); ( async () => {
const app = new Koa(); app.use( cors() ); const router = new Rrouter();
router.get('/getFirstMessage',async ctx=>{
ctx.body = {
message:"get"
}
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(9001 ,async ()=>{
console.log("CONNECTED")
});
} )()

http://127.0.0.1:9001/getFirstMessage
此时就能够通过接口拿到数据

10.改装路由---使用装饰器

在server文件夹下建立如上文件夹和文件

npm i -S babel-core babel-plugin-transform-decorators-legacy babel-polyfill ramda lodash babel-preset-stage-0

/*装饰器注册*/
require('babel-core/register')();
require('babel-polyfill'); const Koa = require('koa'); /*该方法用来批量引入中间件*/
const useMiddlewares = require('./lib/useMiddlewares'); ( async () => {
const app = new Koa(); await useMiddlewares(app); app.listen(9001 ,async ()=>{
console.log("CONNECTED")
});
} )()

webpack+vue+koa+mongoDB,从零开始搭建一个网站的更多相关文章

  1. Vue + Spring Boot从零开始搭建个人网站(一) 之 项目前端Vue.js环境搭建

    前言: 最近在考虑搭建个人网站,想了想决定采用前后端分离模式 前端使用Vue,负责接收数据 后端使用Spring Boot,负责提供前端需要的API 就这样开启了我边学习边实践之旅 Vue环境搭建步骤 ...

  2. 如何用Django从零开始搭建一个网站(0)

    python,django等安装就直接略过了.下面直接奔如主题,搭建网站. Step1:新建一个django project,运行命令:‘django-admin startproject myPit ...

  3. 从零开始搭建一个简单的基于webpack的vue开发环境

    原文地址:https://segmentfault.com/a/1190000012789253?utm_source=tag-newest 从零开始搭建一个简单的基于webpack的react开发环 ...

  4. vue-用Vue-cli从零开始搭建一个Vue项目

    Vue是近两年来比较火的一个前端框架(渐进式框架吧). Vue两大核心思想:组件化和数据驱动.组件化就是将一个整体合理拆分为一个一个小块(组件),组件可重复使用:数据驱动是前端的未来发展方向,释放了对 ...

  5. 从零开始用 Flask 搭建一个网站(一)

    前言 笔者之前未接触过 Python,只是略懂一点前端,所以说从零开始也相差无几吧.Flask 是一个轻量级的基于 Python 的框架,但是扩展性非常良好(Github 上 22000 多个 sta ...

  6. 从零开始用 Flask 搭建一个网站(三)

    从零开始用 Flask 搭建一个网站(二) 介绍了有关于数据库的运用,接下来我们在完善一下数据在前端以及前端到后端之间的交互.本节涉及到前端,因此也会讲解一下 jinja2 模板.jQuery.aja ...

  7. 从零开始用 Flask 搭建一个网站(二)

    从零开始用 Flask 搭建一个网站(一) 介绍了如何搭建 Python 环境,以及 Flask 应用基本项目结构.我们要搭建的网站是管理第三方集成的控制台,类似于 Slack. 本篇主要讲解数据如何 ...

  8. 从零开始用 Flask 搭建一个网站(四)

    前言 从零开始用 Flask 搭建一个网站(三) 介绍了网页前端与后端.前端与前端之间数据的交流.本节主要介绍一下如何应用 Flask-OAuthlib, 使用 Flask-OAuthlib 就可以轻 ...

  9. 从零开始搭建一个react项目

    Nav logo 120 发现 关注 消息 4 搜索 从零开始搭建一个react项目 96 瘦人假噜噜 2017.04.23 23:29* 字数 6330 阅读 32892评论 31喜欢 36 项目地 ...

随机推荐

  1. NOIp 图论算法专题总结 (3):网络流 & 二分图 简明讲义

    系列索引: NOIp 图论算法专题总结 (1) NOIp 图论算法专题总结 (2) NOIp 图论算法专题总结 (3) 网络流 概念 1 容量网络(capacity network)是一个有向图,图的 ...

  2. error C2065: “SHCNE_DELETE”: 未声明的标识符

    转自VC错误:http://www.vcerror.com/?p=1383 问题描述: 编译时出现: error C2065: "SHCNE_DELETE": 未声明的标识符 er ...

  3. Git 提交的正确姿势

    Git 提交的正确姿势:Commit message 编写指南 SCOP范围 middleware core config plugin test type范围 Git 每次提交代码,都要写 Comm ...

  4. 同步架构OR异步架构

    把智能系统比喻成KFC营业厅,处理器是窗口和窗口后面的服务员(把一个窗口当作一个核心),指令集是后面排队的人,窗口是数据吞吐量.当中午就餐人多的时候,一个窗口肯定忙不过来,这时候可以增加窗口,有两种方 ...

  5. 15. Jmeter-配置元件二

    jmeter-配置元件介绍与使用 JDBC Connection Configuration Java请求默认值 密钥库配置 LDAP Extended Request Defaults LDAP请求 ...

  6. Makefile之自动化变量

    makefile自动化变量在大型项目的Makefile使用的太普遍了,如果你看不懂自动化变量,开源项目的makefile你是看不下去的. 以往总是看到一些项目的makefile,总是要翻gnu的Mak ...

  7. python基础实现tcp文件传输

    准备工作,实现文件上传需要那些工具呢? socket(传输).open()(打开文件).os(读取文件信息),当然还有辅助类sys和json,下面我们开始吧 import socket,sys imp ...

  8. Action.c(28): Error -27796: Failed to connect to server "xxxx": [10060] Connection timed out

    Error -27796: Failed to connect to server "125.93.51.230:8080": [10061] Connection refused ...

  9. Codeforces 1132G(dfs序+线段树)

    题面 传送门 分析 对于每一个数a[i],找到它后面第一个大于它的数a[p],由p向i连边,最终我们就会得到一个森林,且p是i的父亲.为了方便操作,我们再增加一个虚拟节点n+1,把森林变成树. 由于序 ...

  10. 从OLLVM4.0.0升级到LLVM8.0.1,并且给LLVM增加Pass 插件系统

    版本太低了,用得我这个揪心. 上周日决定把手头的ollvm从4.0.0升级到LLVM8.0.1. 里面的Pass的话,决定移植到8.0.1里面. 我习惯从代码上来动手 1:下载LLVM  https: ...