VUE__VUE-CLI

一,Vue组件

1.1,什么是组件

组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。组件也可以表现为用 vue.js 特性进行了扩展的原生 HTML 元素。
一句话总结组件: 组件就是自定义标签,它内部存储了很多html代码

<body>
	<mytag></mytag>
</body>

注意: mytag就是一个组件, 该组件必须通过Vue为mytag赋予一定的功能

1.2,全局组件

 <!-- 引入 核心,就有 内置的vue-->
    <script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
        <div id ="app">
            <mycomponent></mycomponent>
            <mycomponent></mycomponent>
            <mycomponent></mycomponent>
        </div>
</body>
        <!--
        组件的认识:组件 (Component) 是 Vue最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码
        一句话总结组件: 组件就是自定义标签,它内部存储了很多html代码

        a.html               b.html               c.html
        1000                2000                 3000
        这三个界面其中有公共的html代码是500行,组件就是把这500行代码抽成一个标签,然后让其它页面
        去使用该标签就可以了

        组件的分类:
            1.全局组件(在所有vue实例中(在它所挂载元素下面有效)有效)
                创建全局组件的语法格式:
                        Vue.component("组件名",{
                            template:"html元素"
                        })

            2.局部组件(在自己vue实例中(在它所挂载元素下面有效)有效)
        -->
        <script type="text/javascript">
            Vue.component("mycomponent",{
                // 必须要有 根 <h1>
                template:"<h1>我是全局组件</h1>"
            })
            //挂载
            new Vue({
                el:"#app"
            })
        </script>

1.3,注意事项

<body>
        <div id="app">
            <mycomponent></mycomponent>
        </div>
</body>
<script type="text/javascript">
    Vue.component("mycomponent",{
        // 必须要有 根 <div>
        template:"<div><h1>我是全局组件</h1><h2>撒可见度</h2></div>"
    })
    //挂载
    new Vue({
        el:"#app"
    })
</script>

1.4局部组件

body>
        <div id="app">
            <mycomponents></mycomponents>
            <outercomponent></outercomponent>
        </div>
        <div id="app1">
            <mycomponents></mycomponents>
            <outercomponent></outercomponent>
        </div>
</body>
<script type="text/javascript">
    let  outercomponent=Vue.component("outercomponent",{
        // 必须要有 根 <h1>
        template:"<div><h1>我是全局组件</h1><h2>撒可见度</h2></div>"
    })
    //挂载
    new Vue({
        el:"#app",
        components:{
            //定义局部组件
            mycomponents:{
                template:"<h1>局部组件</h1>"
            },
            //定义局部组件 ,引用已经创建 好的组件
            innercompoments:outercomponent
        }
    })
    new Vue({
        el:"#app1"
    })
</script>

1.5定义组件的方式

 <div id="app">
            <!-- 全局组件-->
            <outercomponent></outercomponent>
            <br/>
            <outercomponent></outercomponent>
            <template>
                <h2>测试</h2>
            </template>
            <!-- 局部组件-->
            <innercompoments></innercompoments>
        </div>
<!--
        定义组件面板
-->
        <template id="mytemplate">
            <form action="" method="">
                username:<input type="text" name="username"><br/>
                username:<input type="text" name="username"><br/>
                username:<input type="text" name="username"><br/>
                <input type="submit" value="提交">
            </form>
        </template>
</body>

<script type="text/javascript">
    Vue.component("outercomponent",{
        //  面板 id
        template:"#mytemplate"
    })
    //挂载
    new Vue({
        el:"#app",
        components:{
            //定义局部组件
            innercompoments:{
                template:"#mytemplate"
            },

        }
    })
</script>

1.6定义组件的方式2

    <div id="app">
            <!-- 全局组件-->
            <outercomponent></outercomponent>
            <br/>
            <outercomponent></outercomponent>

            <!-- 局部组件-->
            <innercompoments></innercompoments>
            <script type="text/template">

                <h1>
                猜测是
                </h1>

            </script>
        </div>
        <!--
            方式2和方式3的区别:
                方式3把script标签直接放到挂载的dom中它是不能被渲染的-->
        <!-- 定义组件的模板方式3-->
        
        <script id="mytemplate" type="text/template">
            <form action="" method="">
                username:<input type="text" name="username"><br/>
                username:<input type="text" name="username"><br/>
                username:<input type="text" name="username"><br/>
                <input type="submit" value="提交">
            </form>
        </form>
            </script>
            
</body>

<script type="text/javascript">
    Vue.component("outercomponent",{
        //  面板 id
        template:"#mytemplate"
    })
    //挂载
    new Vue({
        el:"#app",
        components:{
            //定义局部组件
            innercompoments:{
                template:"#mytemplate"
            },

        }
    })
</script>

1.7获取动态元素

<div id="app">
            <!-- 全局组件-->
            <mycomponent></mycomponent>
            <br/>
        </div>
        <!--
            方式2和方式3的区别:
                方式3把script标签直接放到挂载的dom中它是不能被渲染的-->
        <!-- 定义组件的模板方式3-->
        <template id="mytemplate" >
            <form action="" method="">
                <h2>{{name}}++&emsp;{{age}}</h2>
            </form>
        </template>
</body>

<script type="text/javascript">
    Vue.component("mycomponent",{
        //  面板 id
        template:"#mytemplate",
        data:function () {
            return{
                name:"萨克达",
                age:21,
            }
        }
    })
    //挂载
    new Vue({
        el:"#app",
        data:{
            name:"朵儿"
        }

    })
</script>

三,vue路由

1、什么是路由

路由是负责将进入的浏览器请求映射到特定的组件代码中。
简单说路由就是url地址和对应的资源的映射,通过一个路径的url地址

2,入门

 <!--路由js-->
    <script type="text/javascript" src="node_modules/vue-router/dist/vue-router.min.js"></script>
</head>
<body>
        <div id="app">
            <!-- 全局组件-->
           <router-link to="/index">首页</router-link>
           <router-link to="/product">产品</router-link>
           <router-link to="/employee">员工</router-link>
            <!-- 组件渲染位置 4.组件渲染的位置-->
            <router-view></router-view>
            <br/>
        </div>
</body>
<!--
    路由: 路由是负责将进入的浏览器请求映射到特定的组件代码中
    url地址映射到组件(html代码)

    做路由:
        1.准备组件
        2.映射关系(url映射组件)
        3.告诉vue我要使用路由
        4.组件渲染的位置
-->
<script type="text/javascript">
   /* 1.准备组件*/
   let INDEX= Vue.component("index",{
       template:"<h1>首页</h1>"
   })
   let PRODUCT =Vue.component("product",{
       template:"<h1>产品</h1>"
   })
   let EMPLOYEE=Vue.component("employee",{
       template:"<h1>员工</h1>"
   })
   /*2.映射关系(url映射组件)*/
    let router=new VueRouter({
        routes:[
                {path:"/index",component:INDEX},
                {path:"/product",component:PRODUCT},
                {path:"/employee",component:EMPLOYEE},
            ]
    })
    //挂载
   /*3.告诉vue我要使用路由*/
    new Vue({
        el:"#app",
        router,
    })
</script>

3,计算属性与watch

body>
        <div id="app">
            {{birth}}=={{saLay}}
            <input type="text" v-model ="message">
            <br/>
        </div>
</body>
<
<script type="text/javascript">
    new Vue({
        el: "#app",
        data:{
            birthday:1429032123201, // 毫秒值
            message:""
        },
        computed:{
            birth(){
                return new Date(this.birthday).getFullYear()+"年"+new Date(this.birthday).getMonth()+"月";
            },
            saLay(){
                return 30*500+1500;
            }
        },
        watch:{
            message(newVal,oldVal){
                //主要监控值的变化
                console.debug("新值"+newVal)
                console.debug("老值"+oldVal)
            }
        }
    })
</script>

四,webpack打包

1、为什么需要打包

将许多碎小文件打包成一个整体,减少单页面内的衍生请求次数,提高网站效率。

  • 将ES6的高级语法进行转换编译,以兼容老版本的浏览器。
  • 将代码打包的同时进行混淆,提高代码的安全性。

2、是什么

Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分
析,然后将这些模块按照指定的规则生成对应的静态资源

3、安装

本地安装:
npm install webpack --save-dev
npm install webpack-cli --save-dev
全局安装:–推荐使用 后面要用
npm install -g webpack
npm install -g webpack-cli

4、Js打包-入门

创建前端项目
npm init -y

5、Js打包-配置文件

webpack 命令就可以进行打包

webpack.config.js ,该文件与项目根处于同级目录
var path = require("path");
module.exports = {
entry: './src/main.js',
output: {
path: path.resolve(__dirname, './dist'),
filename: 'bundle.js'
}
}

6、加载器

webpack 可以使用 loader 来预处理文件。这允许你打包除 JavaScript 之外的任何静态资源。你可以使用 Node.js 来很简单地编写自己的 loader。
loader 通过在 require() 语句中使用 loadername! 前缀来激活,或者通过 webpack 配置中的正则表达式来自动应用 -
vue-loader 转换vue组件 *.vue
css-loader 加载css文件
babel-loader 加载 ES2015+ 代码,然后使用 Babel 转译为 ES5

7、实现

步骤一:

npm install style-loader --save-dev
npm install css-loader --save-dev
a.js引入:
var a = "a模块";
var b = require('./b.js');

console.log(b);

require('../css/index.css')

步骤三:在webpack.config.js文件引入下面代码

var path = require("path");
module.exports = {
    entry: './web/js/a.js',
    output: {
        path: path.resolve(__dirname, './dist'),
        filename: 'bundle.js'
    },
    module: {
        rules: [
            {
                test: /\.css$/,     //匹配文件规则
                use: ['style-loader', 'css-loader']    //匹配后使用什么加载器进行模块加载
                // webpack use的配置,是从右到左进行加载的
            },
        ]
    }
}

步骤四:打包:webpack

8、热更新web服务器

刚才的案例中,我们都是本地运行。webpack给我们提供了一个插件,可以帮我们运行一个web服务;

1)安装插件:npm install webpack-dev-server --save-dev
2)添加启动脚本
在package.json中配置script

      "scripts": {
        "dev": "webpack-dev-server --inline --progress --config ./webpack.conf.js",      },
 
--inline:自动刷新
--hot:热加载
--port:指定端口
--open:自动在默认浏览器打开
--host:可以指定服务器的 ip,不指定则为127.0.0.1

npm run dev/test
出现错误之后
https://www.cnblogs.com/gqx-html/p/10756388.html
https://www.cnblogs.com/laraLee/p/9174383.html


"devDependencies": {
  "css-loader": "^3.1.0",
  "style-loader": "^0.23.1",
  "webpack": "^3.10.0",
  "webpack-dev-server": "^2.9.7"
},

在执行 npm install

五、Vue-cli

1、认识

在开发中,需要打包的东西不止是js、css、html。还有更多的东西要处理,这些插件和加载器如果我们一一去添加就会比较麻烦。
幸好,vue官方提供了一个快速搭建vue项目的脚手架:vue-cli
使用它能快速的构建一个web工程模板。
官网:https://github.com/vuejs/vue-cli
安装命令:npm install -g vue-cli

2、vue-cli快速创建webpack项目

	vue init webpack

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

3、运行

在这里插入图片描述
npm run dev
npm run build 打包可以在服务器运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值