• 一步步创建第一个Vue项目


    写在了GitHub https://github.com/TaoPanfeng/vue-cms

    1 初始化

    • 创建一个文件夹 vue-cms
      • vue-cms目录下创建文件 package.json
      • vue-cms目录下创建文件webpack.config.js
      • vue-cms目录下创建文件.babelrc
      • vue-cms目录下创建目录src
        • src目录下创建文件index.html
        • src目录下创建文件main.js

    package.json

    {
      "name": "vue-cms",
      "version": "1.0.0",
      "description": "这是我的第一个Vue项目",
      "main": "index.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1",
        "dev": "webpack-dev-server --open --port 2198 --hot"
      },
      "keywords": [],
      "author": "陶攀峰",
      "license": "ISC",
      "dependencies": {
        "babel-core": "^6.26.3",
        "babel-loader": "^7.1.5",
        "babel-plugin-transform-runtime": "^6.23.0",
        "babel-preset-env": "^1.7.0",
        "babel-preset-stage-0": "^6.24.1",
        "bootstrap": "^3.4.1",
        "css-loader": "^3.2.0",
        "file-loader": "^4.2.0",
        "html-webpack-plugin": "^3.2.0",
        "less": "^3.10.3",
        "less-loader": "^5.0.0",
        "mint-ui": "^2.2.13",
        "node-sass": "^4.12.0",
        "sass-loader": "^7.3.1",
        "style-loader": "^1.0.0",
        "url-loader": "^2.1.0",
        "vue": "^2.6.10",
        "vue-loader": "^15.7.1",
        "vue-router": "^3.1.2",
        "vue-template-compiler": "^2.6.10",
        "webpack": "^4.39.3",
        "webpack-cli": "^3.3.7",
        "webpack-dev-server": "^3.8.0"
      }
    }
    

    webpack.config.js

    //webpack是基于node进行构建的,所以支持node语法
    var path = require("path");
    
    //在内存中生成模版页面
    var htmlWebpackPlugin = require("html-webpack-plugin");
    
    //vue-loader使用
    var VueLoaderPlugin=require('vue-loader/lib/plugin');
    
    //当以命令行运行webpack 或 webpack-dev-server ,工具会发现我们没有执行入口或出口文件
    //这时会检查项目中的配置文件,并读取这个文件
    module.exports = {
        entry: path.join(__dirname, "./src/main.js"),//入口文件
        output: {
            path: path.join(__dirname, "./dist"),//输出路径
            filename: "bundle.js"//执行输出文件的名称
        },
        plugins: [
            new htmlWebpackPlugin({
                template: path.join(__dirname, "./src/index.html"),//指定模版文件路径
                filename: "index.html"//设置内存中页面名称
            }),
            new VueLoaderPlugin(),
        ],
        module: { // 用来配置第三方loader模块的
            rules: [ // 文件的匹配规则
                //处理css文件的规则
                {test: /.css$/, use: ['style-loader', 'css-loader']},
                {test: /.less$/, use: ['style-loader', 'css-loader', 'less-loader']},
                {test: /.scss$/, use: ['style-loader', 'css-loader', 'sass-loader']},
                //小于等于 limit 不进行base64编码
                {test: /.(png|jpg|jpeg|bmp|gif)$/, use: 'url-loader?limit=43960&name=[hash:8]-[name].[ext]'},
                //处理字体文件的loader,bootstrap小图标就是使用这个
                {test: /.(eot|svg|ttf|woff|woff2)$/, use: 'url-loader'},
                // 配置 babel-loader 来转换高级的ES语法
                {test: /.js$/, use: 'babel-loader', exclude: /node_modules/},
                // 配置 vue-loader 来处理 .vue 文件
                { test: /.vue$/, use: 'vue-loader' },
            ]
        },
        // resolve: {
        //     alias: { // 修改 Vue 被导入时候的包的路径
        //         "vue$": "vue/dist/vue.js"
        //     }
        // }
    };
    

    .babelrc

    {
      "presets": ["env", "stage-0"],
      "plugins": ["transform-runtime"]
    }
    

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    </body>
    </html>
    

    main.js

    console.log("测试");
    

    先执行npm i来安装依赖
    执行npm run dev 控制台无错误,显示 '测试' 就可以了
    在这里插入图片描述

    2 布置基础模块

    引入Mint UI 实现顶部固定栏


    index.htmlbody标签中添加<div id="app"></div>

    main.js内容改为

    /*Vue*/
    import Vue from 'vue'
    /*Mint UI*/
    import MintUI from 'mint-ui'
    Vue.use(MintUI);
    import 'mint-ui/lib/style.css'
    /*App.vue*/
    import app from './App.vue'
    new Vue({
        el: "#app",
        render: c => c(app),
    });
    

    src目录下创建App.vue 内容为

    <template>
        <div class="app_container">
            <!--顶部-->
            <mt-header fixed title="固定在顶部"></mt-header>
            <!--中间 路由 router-view-->
    
            <!--底部-->
            <h1 id="aaa">我是主文件_App.vue</h1>
        </div>
    </template>
    
    <script></script>
    
    <!--lang表示设置样式为 scss ,scoped表示此样式只能当前模版使用-->
    <style lang="scss" scoped>
        .app_container
        {
            padding-top: 40px; //让固定在顶部与<h1>标签内容不重合
        }
    </style>
    

    执行npm run dev
    在这里插入图片描述

    引入MUI实现底部固定栏

    • 首先去GitHub下载MUI数据 https://github.com/dcloudio/mui/
    • src目录下创建目录lib ,把解压好的mui-master下的dist目录放到项目的lib包下,并改名为mui
    • 把解压好的mui-master下的exampleshello-mui下的cssicons-extra.css文件放入项目mui下的css
      在这里插入图片描述
    • 把解压好的mui-master下的exampleshello-mui下的fontsmui-icons-extra.ttf文件放入项目mui下的fonts
      在这里插入图片描述
    • main.js中添加
    /*MUI*/
    import './lib/mui/css/mui.min.css'
    import './lib/mui/css/icons-extra.css'
    
    • App.vue中的底部注释下面加
            <nav class="mui-bar mui-bar-tab">
                <a class="mui-tab-item mui-active" href="#tabbar">
                    <span class="mui-icon mui-icon-home-filled"></span>
                    <span class="mui-tab-label">首页</span>
                </a>
                <a class="mui-tab-item" href="#tabbar-with-chat">
                    <span class="mui-icon mui-icon-contact"></span>
                    <span class="mui-tab-label">会员</span>
                </a>
                <a class="mui-tab-item" href="#tabbar-with-contact">
                    <span class="mui-icon mui-icon-extra mui-icon-extra-cart">
                        <span class="mui-badge">0</span>
                    </span>
                    <span class="mui-tab-label">购物车</span>
                </a>
                <a class="mui-tab-item" href="#tabbar-with-map">
                    <span class="mui-icon mui-icon-search"></span>
                    <span class="mui-tab-label">搜索</span>
                </a>
            </nav>
    
    • 执行npm run dev
      在这里插入图片描述

    引入vue-router

    • App.vue中的底部四个
    • a标签改为 router-link
    • href改为to
    • 四个to的内容依次为
  • 相关阅读:
    当 IDENTITY_INSERT 设置为 OFF 时,不能向表 'tb_User' 中的标识列插入显式值。
    版本控制器Vss和svn
    判断浏览器刷新与关闭的代码
    web开发过程中要注意的问题(二)【转】
    JS版include函数
    兼容FF/IE的添加收藏夹的代码
    jQuery技巧总结
    把JS与CSS写在同一个文件里
    CSS hack浏览器兼容一览表
    利用JS获取IE客户端IP及MAC的实现
  • 原文地址:https://www.cnblogs.com/taopanfeng/p/11684968.html
Copyright © 2020-2023  润新知