webpack+vue+koa+mongoDB,从零开始搭建一个网站
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,从零开始搭建一个网站的更多相关文章
- Vue + Spring Boot从零开始搭建个人网站(一) 之 项目前端Vue.js环境搭建
		前言: 最近在考虑搭建个人网站,想了想决定采用前后端分离模式 前端使用Vue,负责接收数据 后端使用Spring Boot,负责提供前端需要的API 就这样开启了我边学习边实践之旅 Vue环境搭建步骤 ... 
- 如何用Django从零开始搭建一个网站(0)
		python,django等安装就直接略过了.下面直接奔如主题,搭建网站. Step1:新建一个django project,运行命令:‘django-admin startproject myPit ... 
- 从零开始搭建一个简单的基于webpack的vue开发环境
		原文地址:https://segmentfault.com/a/1190000012789253?utm_source=tag-newest 从零开始搭建一个简单的基于webpack的react开发环 ... 
- vue-用Vue-cli从零开始搭建一个Vue项目
		Vue是近两年来比较火的一个前端框架(渐进式框架吧). Vue两大核心思想:组件化和数据驱动.组件化就是将一个整体合理拆分为一个一个小块(组件),组件可重复使用:数据驱动是前端的未来发展方向,释放了对 ... 
- 从零开始用 Flask 搭建一个网站(一)
		前言 笔者之前未接触过 Python,只是略懂一点前端,所以说从零开始也相差无几吧.Flask 是一个轻量级的基于 Python 的框架,但是扩展性非常良好(Github 上 22000 多个 sta ... 
- 从零开始用 Flask 搭建一个网站(三)
		从零开始用 Flask 搭建一个网站(二) 介绍了有关于数据库的运用,接下来我们在完善一下数据在前端以及前端到后端之间的交互.本节涉及到前端,因此也会讲解一下 jinja2 模板.jQuery.aja ... 
- 从零开始用 Flask 搭建一个网站(二)
		从零开始用 Flask 搭建一个网站(一) 介绍了如何搭建 Python 环境,以及 Flask 应用基本项目结构.我们要搭建的网站是管理第三方集成的控制台,类似于 Slack. 本篇主要讲解数据如何 ... 
- 从零开始用 Flask 搭建一个网站(四)
		前言 从零开始用 Flask 搭建一个网站(三) 介绍了网页前端与后端.前端与前端之间数据的交流.本节主要介绍一下如何应用 Flask-OAuthlib, 使用 Flask-OAuthlib 就可以轻 ... 
- 从零开始搭建一个react项目
		Nav logo 120 发现 关注 消息 4 搜索 从零开始搭建一个react项目 96 瘦人假噜噜 2017.04.23 23:29* 字数 6330 阅读 32892评论 31喜欢 36 项目地 ... 
随机推荐
- CF 936C Lock Puzzle——构造
			题目:http://codeforces.com/contest/936/problem/C 玩了一个小时,只能想出 5*n 的方法. 经过一番观察?考虑这样构造:已经使得 A 串的一个后缀 = B ... 
- 解决修改 Linux 下的 PHP 环境变量不生效的方法
			这个问题出现服务器有多个 PHP 版本,php -v和phpinfo()显示两个不同的版本 最近真的,都给朋友解决问题了... phpinfo查看的 php 版本是 7.2.6,到 bash 去使用p ... 
- 六. jenkins部署springboot项目(3)--windows环境--远程windows server服务器
			前提:jenkins服务器和windows server服务器不在一台机器上 对于jenkins服务器上编译好的jar或war包如何推送到windows server服务器上. 参照网上的,在wind ... 
- java ee项目用gradle依赖打包
			plugins { id 'java' id 'eclipse' id 'idea' id 'application' } //mainClassName = ConnectionElasticSea ... 
- 解决让刷新页面时不提示 "重试或取消”对话框
			如果刷新一个已经提交过的页面时,系统总是会提示一个 "重试或取消”的对话框.,如果是一个普通的页面,好象也无所谓,有就有,大不了多点一下.但是当我们是在子窗体中刷新父窗体时,就显得有点多余了 ... 
- svn没有权限检出项目
			解决方法 鼠标右键,svn,setings 
- selenium报错TypeError: 'FirefoxWebElement' object is not iterable
			报错原因element少了s定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数. 改为 返回结果为 
- 设置xampp开机自动启动
			l 设置xampp开机自动启动: 1)vi /etc/init.d/xampp.sh 增加:#!/bin/sh /opt/lampp/lampp start 2)vi /etc/rc.d/r ... 
- python第一个问题
			temp=input("请输入1到100之间内的数字:")if num > 50: print("你妹好漂亮")else: print(&qu ... 
- 【知识强化】第六章 应用层 6.3 文件传输协议FTP
			这节课我们来学习一下文件传输协议FTP. 我们知道一个文件的传输过程呢一定需要协议的规定,那在文件传送协议这一块呢有很多个协议.比较主要的两个一个是文件传送协议FTP,一个是简单文件传送协议TFTP. ... 
