2019-12-02Vue在java项目中的使用——Vue基础(复制资料)

本文原文链接:https://blog.csdn.net/Jack__iT/article/details/88213177

什么是MVVM框架?

View---ViewModel---Model之间的通讯

View:视图,dom

ViewModel:通讯,观察者,能监听到数据的变化

Model:数据,JavaScript对象

常用的MVVM框架有angular.js、react.js、vue.js

MVVM的应用场景:

复杂交互逻辑的前端应用

提供基础的架构抽象

通过Ajax数据持久化,保证前端用户体验

什么是vue.js  (核心是:数据驱动+组件化的前端开发)

数据驱动:实现数据的双向绑定,数据改变驱动视图自动更新

组件化设计原则:页面上每个独立的可视/可交互区域视为一个组件,每个组件对应一个工程目录,组件所需要的各种资源在这个目录下的就进维护,页面就成了组件的容器,它由组件来组成

Vue.js 是一套构建用户界面的 渐进式框架。使用MVVM架构,与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。目标是通过尽可能简单的 API 实现响应式的数据绑定和组合的视图组件,响应式修改dom元素。

使用Vue,您可以快速编写应用程序并直接从浏览器运行应用程序,或者如果需要,可以使用ES6,JSX,组件,路由,捆绑等构建复杂的应用程序。

它可以处理您可能想要使用它的许多不同方式。它也非常灵活,可以适应不同的编写代码的方式,例如,可以使用HTML或Javascript编写模板,也可以使用JSX。可以不触碰 DOM——所有的 DOM 操作都由 Vue 来处理,你编写的代码只需要关注逻辑层面即可。

Vue.js、Angular.js和React.js的区别

Vue.js更小更轻量、更易上手、学习快借鉴了angular.js的指令和react的组件化,react有自己的js语法、Angular是java工程师写的,最难

安装

Vue.js在项目中的引入方式

直接引入js库(可以是CDN在线仓库中的vue.js,也可以是自行下载的vue.js库)

<script src="js/vue.js"></script>

NPM方式安装

在用 Vue 构建大型应用时推荐使用 NPM 安装。NPM 能很好地和诸如 webpack 或 Browserify 模块打包器配合使用。同时 Vue 也提供配套工具来开发单文件组件

在cmd中直接使用npm来安装的一些工具的话会比较慢,所以我们使用淘宝的npm镜像:输入npm i -g cnpm --registry=https://registry.npm.taobao.org,即可安装npm镜像,以后再用到npm的地方直接用cnpm来代替就好了 ,如果权限不够,请使用管理员运行命令提示符


调试工具:

Chrome浏览器,安装vue插件


使用

基础知识+TodoList+Vue-cli

简单直接的dom操作

<body>

<div id="root">{{msg}}</div>

<script>

new Vue(

{

el: "#root",

data:{

msg:"vue Demo"

}

}

)

</script>

</body>

挂载点、模板与实例的关系

挂载点:即Vue对象绑定的元素、需要进行操作的元素,Vue只会对挂载点下的内容进行处理。与vue对象的el属性对应

模板:挂载点内的内容,vue自动结合模板和数据生成内容,然后把内容放在挂载点中

<body>

<div id="root"></div>

<div v-text="msg"></div>

<script>

new Vue(

{

el: "#root",

template: '<h4>这也是模板内容 {{msg}}</h4>',

data:{

msg:"<h5>vue Demo text</h5>"

}

}

)

</script>

</body>

实例: 所创建的vue实例


数据、事件和方法

数值

插值表达式{{vaule_name}}

v-text和v-html:


Vue-cli:

它是vue的脚手架工具

安装:

安装node.js环境

node -v 查看node.js版本

安装vue-cli:

Windows下:npm install -g vue-cli

Mac下:sudo npm install -g vue-cli

常用的vue命令:

vue 命令:

vue list 命令:查看列出可以用哪些模板

vue -V  查看版本

C:\Users\Administrator>vue list

  Available official templates:

  ★  browserify - A full-featured Browserify + vueify setup with hot-reload, li

nting & unit testing.

  ★  browserify-simple - A simple Browserify + vueify setup for quick prototypi

ng.

  ★  pwa - PWA template for vue-cli based on the webpack template

  ★  simple - The simplest possible Vue setup in a single HTML file

  ★  webpack - A full-featured Webpack + vue-loader setup with hot reload, lint

ing, testing & css extraction.

  ★  webpack-simple - A simple Webpack + vue-loader setup for quick prototyping


安装要使用的模板:

vue init webpack sell


项目名称,项目描述、作者、单元测试

安装完成后,Windows下dir可查看当前目录下文件

进入项目目录,

npm install

npm run dev 运行项目

vue项目的构成和原理


webpack

模板语法:

{{}}里面可以包含表达式

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="lib/vue.js"></script>

    <style>

        .bg{

            color: red;

        }

    </style>

</head>

<body>

<div id="div1">

    <p>username:{{username}}</p>

   <!-- 变量的调用-->

    <p>password:{{password}}</p>

    <p>age:{{age*2+5}}</p>

    <!--在{{}}中可使用js表达式语法-->

    <p>age2:{{age}}</p>

    <p>template{{template}}</p>

    <!--调用模板显示HTML结构-->

    <p v-html="template"></p>

    <!--调用末班显示html内容-->

    <p><a v-blind: href="url">百度的超链接</a></p>

    <!--将超链接作为变量,可用:代替v-blind:-->

    <p><a :href="url">百度的超链接</a></p>

    <button type="button" v-on:click="submit()">年龄增长</button>

    <button type="button" @click="submit()">年龄增长</button>

    <!--调用函数的两种方法,可用@代替v-on:-->

</div>

<h5 class="bg">Hello World!!{{msg}}</h5>

<script>

    new Vue(

        {

            el: '.bg',

            data: {

                msg: 'hello vue!!',

                username: "zhang"

            }

        }

    );

    new Vue({

        el: '#div1',

        data: {

            username: 'lisi',

            password: '123',

            age: 23,

            template: '<div>this is a template!</div>',

            url: ' http://baidu.com'

        },

        methods: {

            submit: function () {

                this.age++

            }

        }

    })

</script>

</body>

</html>


计算属性与侦听器

计算属性computed:适合于数据联动,可监听多个变量,但是监听的变量需要在实例里面

监听器 watch:适合于异步场景,监听一个变量或常量


<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="lib/vue.js"></script>

</head>

<body>

  <div id="app">

      {{msg}}

      <p>{{msg1}}</p>

  </div>

<script>

    var app=new Vue({

        el: '#app',

        data: {

            msg: 'vue project',

            another: "another msg"

        },

        watch:{

            msg:function (newval,oldval) {

                console.log('newval:'+newval);

                console.log('oldval:'+oldval)

            }

        },

        computed: {

            msg1: function () {

                return 'computed:'+this.msg+' , '+this.another

            }

        }

    })

</script>

</body>

</html>


条件渲染、列表渲染、class和Style

v-if,v-else,v-else-if,和v-show

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

    <script src="lib/vue.js"></script>

</head>

<body>

    <div id="app">

        <div v-if="count<8">判断1:cout小于8,它的值是:<span>{{count}}</span></div>

        <div v-else-if="count>=8&&count<10">判断2:count大于等于8且小于10啦:值为:{{count}}</div>

        <div v-else>判断3:其他都不满足了,它的值是:<span>{{count}}</span></div>

        <button type="button" @click="submit()">计数器</button>

    </div>

    <script>

       var app= new Vue({

            el: '#app',

            data: {

                msg: 'vue demo3!',

                count: 5

            },

            methods:{

                submit:function () {

                    this.count++;

                }

            }

        });

    </script>

</body>

</html>


v-for  列表渲染

<body>

    <div id="app">

        <div>{{msg}}</div>

        <div v-for="item in list">

            <p v-if="item.age>20">大于20,姓名:{{item.name}},年龄:{{item.age}}</p>

            <p v-if="item.age<=20">小于或等于20,姓名:{{item.name}},年龄:{{item.age}}</p>

        </div>

    </div>

    <script>

        new Vue({

            el:'#app',

            data: {

                msg:'vue demo 4',

                list: [

                    {name: 'zhang',age: 24},

                    {name:'huang',age:20},

                    {name:'luo',age:23},

                    {name:'chen',age:18}

                ]

            }

        })

    </script>

</body>


style的绑定

<body>

    <div id="app">

        <div v-bind:style="mystyle">{{msg}}</div>

    </div>

    <script>

        new Vue({

            el: "#app",

            data:{

                msg: 'this is vue demo4',

                mystyle:{

                    color: 'red',

                    textShadow: '0 0 5px green'

                }

            }

        })

    </script>

</body>

vue-cli


C:\Users\Administrator>f:


F:\>cd /vueFiles


F:\vueFiles>vue create vue-project-190201


  vue create is a Vue CLI 3 only command and you are using Vue CLI 2.9.6.

  You may want to run the following to upgrade to Vue CLI 3:


  npm uninstall -g vue-cli

  npm install -g @vue/cli



F:\vueFiles>

vue的文件结构: template、script、style

模板语法:包含插值、指令(指令缩写 );


创建vue-cli工程项目的方式

进入要创建项目的目录,使用vue create 工程名 的命令创建

使用vue ui命令,然后打开浏览器UI界面创建项目

    预设:包管理器 npm

功能:路由组件:Router 状态管理组件vuex 还有css的预编译组件CSS Pre-processors  使用配置文件 勾选使用

配置:预编译器:Sass/SCSS ,ESLint的配置文件为默认的标准的配置文件:ESLint+Standard  config

启动项目:

npm run serve

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容

  • 33、JS中的本地存储 把一些信息存储在当前浏览器指定域下的某一个地方(存储到物理硬盘中)1、不能跨浏览器传输:在...
    萌妹撒阅读 2,080评论 0 2
  • 第一节 vue:读音: v-u-eview vue和angular区别?vue——简单、易学指令以 v-xxx一片...
    黑色的五叶草阅读 1,131评论 0 1
  • Vue.js 基础 一套用于构建用户界面的渐进式框架, 核心库只关注视图层,易于上手,便于与第三方库或现有项目整合...
    前端小咖阅读 2,249评论 1 33
  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 2,207评论 0 6
  • ## 框架和库的区别?> 框架(framework):一套完整的软件设计架构和**解决方案**。> > 库(lib...
    Rui_bdad阅读 2,906评论 1 4