Day61 (Vue)

影片Vue01


1.Vue (Part_1 > Lab_HelloVueJS > hello_VueJs.HTML)
(1)引用vue

   <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 

(2)建立显示区 {{}}等同react{}

     <div id="app1">{{ message }}</div>

(3)宣告app1,Vue在HTML与DATA之间,DATA改变立即显示
用法:{{}} 物件
Vue特性:无需使用类似React setState也会更新内容(测试:检查后输入app1.message = 123)

   <div id="app1">{{ message }}</div>      var app1 = new Vue({        // element        el: "#app1",        // 与{{ message }}</div>对应        data: {          message: "Hello Vue!",        },      });

(4)宣告app2
用法:v-bind:title、:title 物件

    <div id="app2">    <!-- title HTML语法 -->    <span title="滑鼠放到此处会显示提示"> 请将滑鼠移动到本区上方1 </span><br />    <!-- 5. v-bind:title Vue语法 等同{{}} -->    <!-- 方法1. -->    <span v-bind:title="message"> 请将滑鼠移动到本区上方2 </span><br />    <!-- 方法2. 简写-->    <span :title="message"> 请将滑鼠移动到本区上方3 </span><br />    </div>      //用法:v-bind:title、:title      var app2 = new Vue({        // element        el: "#app2",        // 与v-bind:title="message"对应        data: {          message: Date(),        },      });

(5)宣告app3
用法:v-if booling
无需使用类似React setState也会更新内容(测试:检查后输入app3.seen = ture ;)

      <div id="app3">         <span v-if="seen">Now you see me</span>      </div>      var app3 = new Vue({        // element        el: "#app3",        data: {          seen: true,          //   seen: false,        },      });

使用在事件v-on + if else

  <div id="app3_1">    <!-- @ 是 v-on 的缩写 -->    <button @click="seen=!seen">点我观看v-if-else</button>    <span v-if="seen">v-if</span>    <span v-else>v-else</span>  </div>

(6)宣告app4
用法:v-for for迴圈

     <!-- 9. for迴圈 todoItem 可以改 但要一致 此处只是要求要一个变数-->     <div id="app4">       <!-- todoList变数内 的 text-->       <ol>         <li v-for="todoItem in todoList">{{ todoItem.text }}</li>       </ol>       <!-- todoList变数内 的 text + key -->       <ul>         <li v-for="(doItem, key) in todoList">{{doItem.text}} -- {{key}}</li>       </ul>       <ul>         <!-- .text 几个跑几次 -->         <li v-for="todoItem in todoList">A</li>       </ul>     </div>      var app4 = new Vue({        // element        el: "#app4",        data: {          todoList: [{ text: "Learn JavaScript" },                      { text: "Learn Vue" },                      { text: "Build something awesome" }],        },      });

(7)宣告app1_1
用法:function v-on=@ 事件

    <div id="app1_1">      {{ message }}<br />      <!-- reverseMessage方法名称 -->      <button v-on:click="reverseMessage">Reverse Message</button>    </div>      var app1_1 = new Vue({        el: "#app1_1",        data: {          message: "Hello Vue!",        },        // 方法        methods: {          // 无需使用=>函式也能抓到this          reverseMessage: function () {            this.message = this.message.split("").reverse().join("");            // this.message = DATA();          },        },      });

(8)宣告app1_2
用法:function v-on 事件 并 + 参数

    <div id="app1_2">      {{ message }}<br />      <!-- reverseMessage方法名称 -->      <button v-on:click="reverseMessage(3)">Reverse Message</button>    </div>      var app1_2 = new Vue({        el: "#app1_2",        data: {          message: "Hello Vue!",        },        // 方法        methods: {          // 无需使用=>函式也能抓到this          reverseMessage: function (x) {            // split把字串拆成[] ; reverse相反 ; join连接在一起            this.message = x;            // this.message = DATA();          },        },      });

(9)宣告app1_3
v-mould 双向改变
用法:input = text 显示值

    <div id="app1_3">      <input v-model="message" /><br />      {{ message }}<br />      <!-- reverseMessage方法名称 -->      <button v-on:click="reverseMessage">此处资料会随着text换掉</button>    </div>

(10)宣告app5
用法:迴圈如何知道点到第几个?(侦错用,放入变数)

      <div id="app5">        <!-- todoList变数内 的 text + key -->        <ul>          <li v-for="(doItem, key) in todoList" v-on:click="liClick(key)">{{doItem.text}} -- {{key}}</li>        </ul>      </div>      var app5 = new Vue({        // element        el: "#app5",        data: {          todoList: [{ text: "Learn JavaScript" }, { text: "Learn Vue" }, { text: "Build something awesome" }],        },        methods: {          liClick: function (x) {            alert(x);          },        },      });

2.Vue CLI command line
透过命令列产生专案

(1)终端机下,查看是否有安装过Vue物件
C:\XXX\VueJS
按下 Ctrl + ` 组合键也可开启终端机视窗

vue --version 查看是否有安装过Vue物件

第一次通常没有

(2)安装Vue物件

npm install -g @vue/cli

-g 全域安装

(3)建立 Vue.js 专案

vue create hello-vue-cli

利用上下键切换,选择
Default (Vue 3) ([Vue 3] babel, eslint)
选好之后,按下键盘键

出现hello-vue-cli资料夹

(4)开启hello-vue-cli终端机,并跑伺服器

npm run serve

如果浏览器没有自动启动,请手动在浏览器输入:
http://localhost:8080/

(5)建立AppHeader.vue档案
hello-vue-cli\src\components\AppHeader.vue

public资料夹内是前端
src/main.js把App.vue内的App物件放到public/index/内的#App

(6)建立AppHeader元件于AppHeader.vue内

     <template>       <header>           <!-- AppHeader元件放在这 -->         <h1>{{ headerMessage }}</h1>          <hr />       </header>     </template>          <script>     export default {       name: "AppHeader", //AppHeader元件       data() {         return {           headerMessage: "eeeeeeeeeeeeeeeeeeeeeeeeeeeHello! Vue.js",         };       },     };     </script>

(7)把AppHeader元件显示出来
hello-vue-cli\src\app.vue

import AppHeader from './components/AppHeader.vue'export default {  name: 'App',  components: {    HelloWorld,    AppHeader  }}

查看画面,会改变
http://localhost:8080/


3.把React改成Vue专案
VUEJS > React_demo_change_Vue

(1)複製React档案(Lab_WebAPI\public\index_已连线资料库.html)
css、fonts、js、index_已连线资料库.html

(2)贴到React_demo_change_Vue,并複製一份改名为index.html

(3)引用Vue.js
index.html

  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

(4)製作元件

    <div id="app1">{{ message }} + {{ date }}</div>      var app1 = new Vue({        el: "#app1",        data: {          message: "Hello Vue!",          date: Date(),          newsList: [            { newsId: 1, ymd: "2017-05-01", title: "Item 1" },            { newsId: 2, ymd: "2017-05-01", title: "Item 2" },            { newsId: 3, ymd: "2017-05-02", title: "Item 3" },            { newsId: 4, ymd: "2017-05-03", title: "Item 4" },            { newsId: 5, ymd: "2017-05-04", title: "Item 5" },          ],        },      });

(5)让画面(html)只留下First item

(6)製作迴圈for在First item

   <li v-for="(newsItem, key) in newsList"

此处注意,要记得绑#app1,否则吃不到(有区域性)

(7)First item由固定改为变数{{newsItem.title}}

(8)并增加[{{newsItem.ymd}}]

(9)按钮增加事件

   <button v-on:click="editButtonClick(key)"

(10)增加元件方法

   methods: {          editButtonClick: function (key) {            alert(key);          },        },

此处的key由(6)取得

(11)新增对话盒元件

      var dlg = new Vue({        el: "#newsModal",        data: {          title: "aaa",          ymd: "bbb",        },      });

(12)对话盒增加v-mould 双向改变

      v-model="title"      v-model="ymd"

(13)变更app1方法
跳出对话盒

        methods: {          editButtonClick: function (key) {            alert(key);            $("#newsModal").modal({ backdrop: "static" });          },        },

(14)让title与ymd由固定转变数

(14-1)dlg元件

      var dlg = new Vue({        el: "#newsModal",        data: {          title: "",          ymd: "",        },      });

(14-2)app1元件方法新增抓值

        methods: {          editButtonClick: function (key) {            // alert(key);            dlg.title = this.newsList[key].title;            dlg.ymd = this.newsList[key].ymd;            $("#newsModal").modal({ backdrop: "static" });          },        },

(15)确定纽绑事件,让编辑钮可以使用

(15-1)按编辑纽时,让被编辑的元素key=-1

        methods: {          editButtonClick: function (key) {            dlg.currentIndex = key; //按确定按钮时,送新的key值(-1)进去        var dlg = new Vue({          currentIndex: -1,

(15-1)按下确定时,抓-1值进行变更,并隐藏跳窗

        <button type="button" v-on:click="okButtonClick" id="okButton"         class="btn btn-success">        <span class="glyphicon glyphicon-ok"></span> 确定        var dlg = new Vue({        el: "#newsModal",        data: {          currentIndex: -1,          title: "",          ymd: "",        },        methods: {          okButtonClick: function () {            var key = this.currentIndex;            app1.newsList[key].title = this.title;            app1.newsList[key].ymd = this.ymd;            $("#newsModal").modal("hide");          },        },      });

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章