VUE实战项目开发--vue起步

蔚落 2022-05-24 02:51 347阅读 0赞

一个vue的Hello World实现

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Hello World</title>
  6. <script src="./vue.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">{
  10. {content}}</div>
  11. <script>
  12. // var dom = document.getElementById('app');
  13. // dom.innerHTML = 'hello world'
  14. var app = new Vue({
  15. el: '#app',
  16. data: {
  17. content: 'hello world'
  18. }
  19. })
  20. </script>
  21. </body>
  22. </html>
  23. var app = new Vue({
  24. el: '#app',
  25. data: {
  26. content: 'hello world'
  27. }
  28. })

上面的这段代码:new出一个实例,el表示实例负责管理的范围,让这个实例接管id=app这个标签里的所有内容。

定义了一个data数据,再通过插值表达式{ {}}把data里的content数据插入进去。

一个简单的TodoList

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>TodoList</title>
  6. <script src="./vue.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <input type="text" v-model="inputValue"/>
  11. <button v-on:click="handleBtnClick">提交</button>
  12. <ul>
  13. <li v-for="item in list">{
  14. {item}}</li>
  15. </ul>
  16. </div>
  17. <script>
  18. var app = new Vue({
  19. el: '#app',
  20. data: {
  21. list: [],
  22. inputValue: ''
  23. },
  24. methods: {
  25. handleBtnClick: function () {
  26. this.list.push(this.inputValue);
  27. this.inputValue = ''
  28. }
  29. }
  30. })
  31. </script>
  32. </body>
  33. </html>

上面的代码使用了三个指令:v-for、v-model、v-on

分别代表的作用如下:

  • v-for:遍历list数组
  • v-model:双向数据绑定,data里的inputValue与input标签里的inputValue变化是一致的
  • v-on:绑定事件,在这里是绑定了一个click点击事件

注意:MVVM模式的讲解:

  • M层:model数据层
  • V层:视图层
  • VM层:通过vue实现对M层和V层的控制,通过VM层的各种操作可以改变数据层(model层),然后再映射到视图层(view层)。面向数据编程,减少了对DOM的操作。

组件化的开发-

组件化开发:每一个组件就是页面上的一个区域。

通过组件化的思想对TodoList进行修改:

  1. <!--** 使用组件化思想的TodoList-->
  2. <!--** component: 创建全局组件的方法-->
  3. <!--** props: 接受父组件的数据-->
  4. <!--** template: 子组件的模板-->
  5. <!DOCTYPE html>
  6. <html lang="en">
  7. <head>
  8. <meta charset="utf-8">
  9. <title>TodoList</title>
  10. <script src="./vue.js"></script>
  11. </head>
  12. <body>
  13. <div id="app">
  14. <input type="text" v-model="inputValue"/>
  15. <button @click="handleBtnClick">提交</button>
  16. <ul>
  17. <todo-item v-bind:content="item"
  18. v-for="item in list">
  19. </todo-item>
  20. </ul>
  21. </div>
  22. <script>
  23. //定义全局组件
  24. // Vue.component("TodoItem",{
  25. // props: ['content'],
  26. // template:"<li>{
  27. {content}}</li>"
  28. // })
  29. //局部组件的使用,还需要在app这个实例中注册
  30. var TodoItem={
  31. props: ['content'],
  32. template:"<li>{
  33. {content}}</li>"
  34. }
  35. var app = new Vue({
  36. el: '#app',
  37. //局部组件的注册
  38. components: {
  39. TodoItem: TodoItem
  40. },
  41. data: {
  42. list: [],
  43. inputValue: ''
  44. },
  45. methods: {
  46. handleBtnClick: function () {
  47. this.list.push(this.inputValue);
  48. this.inputValue = ''
  49. }
  50. }
  51. })
  52. </script>
  53. </body>
  54. </html>

简单的组件传值

v-bind: 父组件向子组件传值(可以省略为 : )
props: 接受父组件的数据
template: 子组件的模板
@delete=”handleItemDelete”: 监听子组件delete这个事件,一旦删除就会执行父组件中的handleItemDelete方法
$emit: 子组件向父组件传值

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>TodoList</title>
  6. <script src="./vue.js"></script>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <input type="text" v-model="inputValue"/>
  11. <button @click="handleBtnClick">提交</button>
  12. <ul>
  13. <todo-item v-bind:content="item"
  14. v-bind:index="index"
  15. v-for="(item, index) in list"
  16. @delete="handleItemDelete">
  17. </todo-item>
  18. </ul>
  19. </div>
  20. <script>
  21. //局部组件的使用,还需要在app这个实例中注册
  22. var TodoItem={
  23. props: ['content', 'index'],
  24. template:"<li @click='handleItemClick'>{
  25. {content}}</li>",
  26. methods: {
  27. handleItemClick: function() {
  28. this.$emit("delete", this.index)
  29. }
  30. }
  31. }
  32. var app = new Vue({
  33. el: '#app',
  34. //局部组件的注册
  35. components: {
  36. TodoItem: TodoItem
  37. },
  38. data: {
  39. list: [],
  40. inputValue: ''
  41. },
  42. methods: {
  43. handleBtnClick: function () {
  44. this.list.push(this.inputValue);
  45. this.inputValue = ''
  46. },
  47. handleItemDelete: function (index) {
  48. this.list.splice(index,1);
  49. }
  50. }
  51. })
  52. </script>
  53. </body>
  54. </html>

发表评论

表情:
评论列表 (有 0 条评论,347人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Vue.js起步

    在我们的第一章有提到过我的第一个示例, > 1. `<div id="app">` > 2. `{ { message }}` > 3. `</div>` > 1.

    相关 Vue起步

    Vue起步 1.Vue.js是什么 Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注

    相关 Vue.js起步

    Vue.js起步 在我们的第一章有提到过我的第一个示例, 我们这章节主要讲如何在npm初始化的项目中创建一个模块。 创建一个模块MyTemplate.vue