zoukankan      html  css  js  c++  java
  • element-ui和npm、webpack、vue-cli搭建Vue项目

    一、element-ui的简单使用

    1、安装

    1. npm 安装
      推荐使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用。
      npm i element-ui -S

    2. CDN

    复制代码
    目前可以通过 unpkg.com/element-ui 获取到最新版本的资源,在页面上引入 js 和 css 文件即可开始使用。
    <!-- 引入样式 -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <!-- 引入组件库 -->
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    复制代码

    2、element和Vue的使用示例(NavMenu导航菜单的使用)

    1. 导入需要使用的JS文件

    复制代码
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    <!-- 引入样式 -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <!-- 引入组件库 -->
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    复制代码

    2. 去element官网找到需要的组件

    复制代码
    我们这里简单的展示一下导航菜单,把需要的样式复制到我们的HTML页面(这里我只用一个样式,就只复制那个样式)
    <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect">
      <el-menu-item index="1">处理中心</el-menu-item>
    <el-menu>
    复制代码

    3. 定制我们的Vue

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta http-equiv="content-type" charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>教育网</title>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
        <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
        <!-- 引入样式 -->
        <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
        <!-- 引入组件库 -->
        <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    
        <style>
            .el-menu {
                display: flex; /*弹性盒子/CSS3的一个新特性*/
                align-items: center; /*水平居中*/
                justify-content: center; /*垂直居中*/
            }
        </style>
    
    </head>
    
    <body>
    <div id="app">
        <my_header></my_header>
        <router-view></router-view>
    </div>
    
    <template id="header">
        <div>
            <!--设置了router=true后,el-menu-item就等于router-link,index就等于to-->
            <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" :router="true">
                <el-menu-item index="/">首页</el-menu-item>
                <el-menu-item index="/course">免费课程</el-menu-item>
                <el-menu-item index="3">轻课</el-menu-item>
                <el-menu-item index="4">学位课程</el-menu-item>
                <el-menu-item index="5">智能题库</el-menu-item>
                <el-menu-item index="6">公开课</el-menu-item>
            </el-menu>
        </div>
    </template>
    
    <script>
        let my_header = {
            // 把菜单导航设置成Vue实例的组件
            template: "#header",
            data() {
                return {
                    // 默认选中
                    activeIndex: '/',
                }
            }
        };
    
        let url = [
            {
                path: '/',
                component: {
                    template: `<div><h1>这是首页</h1></div>`
                }
            },
            {
                path: '/course',
                component: {
                    template: `<div><h1>免费课程页面</h1></div>`
                }
            },
    
        ];
    
        let router = new VueRouter({
           routes: url
        });
    
        const app = new Vue({
            el: "#app",
            router: router,
            components: {
                my_header: my_header
            },
        })
    </script>
    
    </body>
    </html>
    View Code

    二、Node.js和npm

    1、什么是Node.js和npm

    复制代码
    Node.js是一个Javascript运行环境(runtime environment),实质是对Chrome V8引擎进行了封装。
    Node.js不是一个 JavaScript 框架,不同于CakePHP、Django、Rails。Node.js 更不是浏览器端的库,不能与 jQuery、ExtJS 相提并论。
    Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。
    
    而npm是Node.js的包管理工具。
    
    好吧,类比一下python:
    Node.js就是你的python解释器。
    npm就等于python解释器的pip,用于管理(安装,卸载)包的工具。
    
    Node.js有它自己的语法,我们这里安装Node.js主要是为了使用它的npm,方便我们搭建Vue项目,至于它的语法,有兴趣的可自行研究。
    注意:node.js和python解释器一样,需要自己到官网去下载并安装。
    复制代码

    2、npm介绍和常用指令

    1. npm的安装和更新

    复制代码
    下载安装Node.js后自带包管理工具npm。
    
    查看安装版本信息:
    
      --  node -v  查看Node.js 版本信息
    
      --  npm -v  查看npm版本信息
    
    更新npm到指定版本:
    
      --  npm install npm@5.3.0 -g
    
      -- npm install npm@latest -g 更新最新的稳定版本
    
    命令参数(S、D、g):
    npm install module_name -S    即    npm install module_name –save    下载到dependencies(生产环境)
    
    npm install module_name -D    即    npm install module_name –save-dev 下载到devDependencies(开发环境)
    
    npm install module_name -g 下载到全局
    模块将被下载安装到【全局目录】中。
    【全局目录】通过 npm config set prefix "目录路径" 来设置。
    比如说,当我们使用了npm install -g express安装了express框架后, 我们就可以在电脑里的某一个文件夹下,打开控制台,直接使用express mvc创建项目,如果不是全局安装的会遇到 “'express' 不是内部或外部命令,也不是可运行的程序”错误。
    
    npm install module_name 本地安装,将模块下载到当前命令行所在目录(将安装包放在:命令行所在目录/node_modules 下)
    复制代码

    2. npm 常用操作

    复制代码
    之前我们用JQuery或者Bootstrap用cdn 或者直接手动下载并放入项目,而且要管理版本。
    有了npm,我们管理自己的依赖包以及版本更加简单。
    
    到自己项目目录下,进行以下命令:
    
      -- npm init -y    输入-y使用默认配置项 生成package.json文件。
    
      -- npm i jquery@0.0.0   简写i是install的简写 下载依赖  不写@ 默认最新版本
    
      -- npm uninstall jquery  卸载依赖包
    
      -- npm update jquery   更新依赖包
    
      -- npm list  列出已安装的依赖
    
      -- npm install webpack --D 保存为开发环境依赖
    
      -- 老版本需要 --save 参数 现在不需要了
    
    我们的项目目录下会生成一个 node_modules 目录,我们用npm下的包会在这个目录下。
    我们所有的依赖信息放在package.json文件中,包括我们所有的依赖以及版本。
    如果我们删掉 node_modules目录,可以使用 npm i  来下载所有依赖。
    复制代码

    3. npm 常用配置项

    复制代码
    当我们用npm init 的时候用了参数 -y,如果不用-y我们可以进行一些配置。
    
    在我们的package.json文件中有很多配置项
    
      -- name  项目名字 中间不能有空格只能用小写
    
      -- version  项目版本
    
      -- description   项目描述信息
    
      -- main  项目的入口文件
    
      -- scripts 指定命令的快捷方式 npm run test     test是scripts里的键名 值为具体命令
    
      -- author 作者
    
      -- license  许可证
    
      -- dependencies  生成环境依赖的包以及版本信息
    
      -- devDependencies  开发环境的依赖
    复制代码

    三、webpack3版本

    1、webpack是什么

    webpack是一个模块打包器
    它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适
    的格式以供浏览器使用。

    2、安装和配置

    复制代码
    webpack是跑在Node.js环境下的,所以确定自己有node环境。
    
    安装方式:
      -- npm install webpack -g  全局安装(webpack3版本可以直接使用webpack安装)
    
      -- webpack  <要打包文件>  <打包后文件>     全局这种方式进行打包
    
      -- npm install webpack   在自己的项目下 npm init 后在下载webpack 这就是局部安装
    
      -- node_modules/.bin/webpack <要打包文件>  <打包后文件>   项目里要打包文件是入口文件
    
      -- 路径太长 太烦 可以自定义命令  在package.json 文件的 scripts下面自定义
    复制代码

    3、entry 和 output

    复制代码
    entry 入口文件  output 出口文件
    上面我们自定义命令的时候 命令太长了,而且我们命令太多的时候我们需要每次都自定义多条命令
    
    我们可以把命令写在webpack.config.js文件中
    module.export = {
        // 所有的入口文件
        entry: {
             home: './main.js', 
             login: './login.js',
        }, 
        // 出口文件  
        output: {
             filename: '[name].bundle.js',
             path: __dirname + '/dist',
        }       
    }
    // backage.json  下的scripts
    scripts: {
         "pack": "node_moudles/.bin/webpack --watch"
    }
    
    //  运行命令
    npm run pack
    复制代码

    四、webpack4版本(新特性)

    1、 在4版本中,webpack不再单独使用,需要webpack-cli

      -- 全局安装  npm install webpack webpack-cli -g
    
      -- 局部安装  npm install webpack webpack-cli -D

    2、 增加了模式区分 (development, production)

    webpack --mode development/production 进行模式切换
    
    development 开发者模式 打包默认不压缩代码
    
    production  生产者模式 上线时使用,压缩代码。 默认是这个模式

    3、默认入口文件(入口文件需自己创建)是./src/index.js,默认输出文件./dist/main.js

    -- 当只有一个入口文件也就是src/index.js时,无需增加webpack.config.js
    -- 因此打包后,别的HTML页面只需要引入main.js即可使用

    4、多入口以及多出口(不是必要的配置项)

    // webpack.config.js配置
    entry: {
        // 多入口
        a: "./src/js/index.js",
        b: "./src/js/index2.js",
    }
    output: {
        // 多出口
        path: path.resolve(__dirname, 'dist'),
        filename: './js/[name].bundle.js'
    }
    View Code

    5、打包

    1. 在webpack4中需要手动创建src文件夹,在src文件夹下,新建index.js作为入口文件
    2. 打包命令
    单独使用webpack打包
        webpack --mode development(开发模式)
        webpack --mode production(生产模式)

    6、export/import补充

    复制代码
    0. 补充
    export default 某个变量
    import 变量名1 from xx 
    
    1. my.js
    let name = '明仔';
    function func() {
        console.log(123);
    }
    
    const age = 18;
    
    export {name, func}
    
    // 每个文件只能有一个export default,且只抛出一个值
    export default age
    
    
    2. index.js
    import {name, func} from "./my"
    
    // 导入export默认抛出的变量,并改名为aaggee
    import aaggee from "./my"
    
    console.log(name);
    console.log(aaggee);
    func();
    复制代码

    五、vue-cli 2版本

    1、用vue-cli搭建项目

    复制代码
    0. 友情提示
    vue-cli自带webpack和vue.js,
    当对象的键和值的变量名称相同时,可简写成一个变量,
    在vue-cli项目中使用npm下载的包,导入时不需要写路径,直接可以导入,但必须起别名
    例如:npm i vue-router
    那么:
        在main.js中使用时,只需要直接导入即可
        import VueRouter from 'vue-router'
        // 导入后需要让vue对象使用它
        Vue.use(VueRouter)
    
    
    
    vue-cli是官方提供的快速构建这个单页面应用的脚手架。
    根据官方文档中的构件流程:前提是已经安装了node.js 否则npm都用不了
    
    1. 使用npm全局安装vue-cli 
        npm install vue-cli -g

    常见报错以及解决办法
    错误一:
    报错:npm ERR! Unexpected end of JSON input while parsing near '...ectories":{},"dist":{'
    解决办法: npm cache clean --force

    错误二:
    如果没有node_moudels文件夹
    执行 npm i
    然后执行 npm run build
    然后再启动项目
    如果在执行npm i 时候遇到第一个错误 按照第一个错误的解决办法
    错误三:
    webpack-dev-server 不是内部命令
    请卸载重装
    命令
    npm uninstall vue-cli -g
    npm install vue-cli -g
    2. 安装完成后在自己的工作空间里输入下面命令 vue init webpack 项目名称 输入命令后进入安装阶段,需要用户输入一些信息
    3. 切换到我们的项目目录下 cd 到项目目录下 npm run dev --> 启动项目 4. 项目中需要使用一些.vue后缀的文件,需要下载vue.js插件 Setting --> Plugins --> 搜索vue.js并下载 --> 重启pycharm
    复制代码

    2、目录结构

    复制代码
      -- build 打包的所有文件
    
      -- config 配置文件,执行文件需要的配置信息
    
      -- src 资源文件(工作目录) 所有的组件以及所有的图片 都在这个文件夹下
    
      -- node_modules  项目的所有依赖包
    
      -- static 静态资源
    
      -- package.json   依赖包的json文件
    
       -- index.html 单页面应用
    复制代码

    3、Vue搭建的单页面项目解耦分析

    复制代码
    1. 项目中的index.html就是我们的单页面
    
    2. src/main.js就是我们这个单页面index.html对应的js文件
    
    3. src/App.vue就是我们这个单页面index.html的app作用域的组件, .vue后缀的文件都是组件的配置信息
    
    4. main.js解析
    new Vue({
        el: '#app',
        components:{App},
        template: '<App/>'
    })
    
    el: '#app' 是index.html 的<div id="app"></div>
    components是注册组件
    <App/> 他就是App.vue,是组件的配置信息
    根实例的template就是选择vue根实例要加载的组件,会把index.html里面的内容替换成加载的组件的内容
    App.vue是主程序,其他所有的.vue都是放在App.vue中,所以只需要加载App.vue就完全可以把其他的东西加载出来
    
    5. 其他组件就放在src/components里面,后缀使用.vue。src/assets是存放图片的
    
    6. .vue后缀的文件就是我们组件的配置信息
    
    7. 把配置信息命名抛出后,在我们的主组件APP.vue可以导入并使用,也就是说其他组件都是抛出给主组件导入使用的
    <template>
      <div id="app">
        <h1>这是单页面应用的大组件App组件</h1>
        <!--子组件-->
        <my_header></my_header>
      </div>
    </template>
    
    <script>
    // 导入子组件配置信息
    import MyHeader from "./components/MyHeader"
    
    export default {
      name: 'APP',
      // 在这里定义子组件
      components: {
        my_header: MyHeader
      },
      }
    </script>
    
    <style>
    
    </style>
    
    8. 如果需要路由vue-router,则使用npm i vue-router下载这个js
       然后在src下面新建一个routers文件夹用于创建vue-router实例,然后抛出,main.js导入后即可使用路由
    
    9. 在vue-cli的项目中,组件component必须解耦,也就是说component组件的配置内容都得写在一个.vue文件中,然后抛出,导入使用
       component单数,代表只有一个组件,component: 组件名(配置信息名)
       components复数,代表有几个组件,components: {组件名1: 配置信息名1, 组件名2: 配置信息名2},如果组件名和配置信息名一样,
       可以只写一个名字 components:{组件名1, 组件名2}
    复制代码

    4、vue-cli配置JQuery、bootstrap

    复制代码
    1. 下载安装
    -- npm install jquery 
    -- npm install bootstrap 
    
    2. 修改build/webpack.base.conf.js 注意:vue-cli3版本中如果没有webpack.base.conf.js,那么手动创建一个webpack.base.conf.js
    const webpack = require('webpack')
    // 在module.exports里添加插件
    plugins: [
        new webpack.ProvidePlugin({
          $: "jquery",
          jQuery: "jquery",
          "windows.jQuery": "jquery",
          // Popper: ['popper.js', 'default']
        })
    ],
    //  *******下面是如果手动下载bootstrap用的*******
    resolve: {
        extensions: ['.js', '.vue', '.json'],
        alias: {
          'vue$': 'vue/dist/vue.esm.js',
          '@': resolve('src'),
          // 如果是手动下载的bootstrap需要添加这个配置
          // 'assets': path.resolve(__dirname, '../src/assets'),
          // 'jquery': 'jquery/src/jquery'
        }
      },
    View Code
    
    
    3. 修改主程序的js文件 main.js
    import $ from 'jquery'
    import 'bootstrap/dist/css/bootstrap.min.css'
    import 'bootstrap/dist/js/bootstrap.min.js'
    复制代码

    六、vue-cli 3版本

    复制代码
    1、下载vue-cli 3.0
    -- npm install @vue/cli -g 
    -- 报错 npm error  可以运行下面命令(清理缓存)
    -- npm cache clean --force && npm cache verify
    
    
    2、创建项目
    -- vue create 项目名称
    
    
    3、目录结构以及配置文件
    -- vue-cli3 目录更加简单
    -- 我们手动在项目根目录下创建vue.config.js里面写vue的配置信息
    
    
    4、vue-cli3 配置jQuery、bootstrap
    -- 跟vue-cli2一样的配置,手动创建一个webpack.base.conf.js 
    复制代码
  • 相关阅读:
    DNNClassifier 深度神经网络 分类器
    浏览器对MP4视频 帧宽度 高度的兼容性
    UnicodeEncodeError:'latin-1' codec can't encode character
    文件夹下 文件计数
    the largest value you actually can transmit between the client and server is determined by the amount of available memory and the size of the communications buffers.
    the “identity” of an object
    广告特征 用户特征
    如果一个维度全覆盖,则有效维度应该对该维度全覆盖
    a high-level neural networks AP
    使用 LDA 挖掘的用户喜好主题
  • 原文地址:https://www.cnblogs.com/yidashi110/p/10091779.html
Copyright © 2011-2022 走看看