不二如是 发表于 2018-8-27 11:12:01

000 V Why Vue.js

本帖最后由 不二如是 于 2018-8-28 10:26 编辑



没看错,17年创建的专辑,终于要开始更了...

最近在和小甲鱼老师打磨《零基础入门学习Web》(H5&C3)篇(传送门),抽出空闲来填坑~

Vue (读音类似于 view) 是一套用于构建用户界面的渐进式框架。

为什么要开启这个系列呢,理由很简单:
H5+C3+JS是基础的水泥沙子和钢筋,能建楼;Vue是在此基础上演化出的模块,直接组合快速建楼,底层也是前面那些东西,只不过程序员只管用就好。

从某些角度讲,小程序的核心理念和Vue有异曲同工之妙。
(推荐:微信小程序 - 庖丁解牛)

官方(传送门)用三个很有气势的句子,描述了Vue的优点:


没必要夸了,反正就是使用Vue会让Web开发变得简单。

此处友情提醒:
越是简单的东西,越要警惕,很多坑就是这么来的

抛开以后很久很久才会遇到的坑,对于初学者来说Vue还是极其友好滴~

作为系列的第一篇,鱼油只需要了解MVVM模式



与很多知名的前端框架Angular、Ember一样,Vue.js在设计上采用MVVM(Model-View-ViewModel)模式。
(还有MVC、MVP...)

当View(试图层)发生变化时,会自动更新ViewModel(视图模型),反之亦然。

View和ViewModel之间通过双向绑定(data-binding)建立联系,如下图所示:




对比看不同

光说枯燥的定义很无聊,咱们拿代码说话~

用过JQuery的鱼油,对于其方便的操纵DOM、绑定事件的能力一定大为赞叹~
(JQ相关教程:传送门)

比如我们想在网页中插入一个元素(target类),并且添加一个单击事件,就可以这么写:
if(target){
    var btn = $("<button>Hi</button>");
    btn.onclick(function () {
      console.log("Hi");
    });
    $("#app").append(btn);
}


Vue就会把上述过程中混合(耦合)在一起的视图和业务逻辑分看。

通过MVVM模式拆分为数据和视图两部分,只需要关心数据即可,DOM部分Vue帮你搞定:
<div id="app">
    <button v-if="showBtn" v-on:click="handleClick">Hi</button>
</div>
<script>
    new Vue({
      el:"#app",
      data:{
            showBtn:true
      },
      methods:{
            handleClick:function () {
                console.log("hi");
            }
      }
    })
</script>

看不懂没关系,这里只是展示Vue的用法(得瑟一下{:10_297:} ),后面我们来搞定~

是不是和小程序很像,没错小程序采用的是MVC模式。

MVVM是在MVC模式上演化出来滴,不理解没关系,了解一下即可~

最后一点“无关紧要”的说明:
本系列教程假设鱼油已了解关于 HTML、CSS 和 JavaScript 的中级知识。

如果你刚开始学习前端开发,将框架作为你的第一步可能不是最好的主意——掌握好基础知识再来吧!

之前有其它框架的使用经验会有帮助,但这不是必需的。



课后作业


1、MVVM模式由那几个核心部分组成?



答案:
**** Hidden Message *****



如果有收获,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

这位鱼油,如果喜欢Vue,请订阅 专辑(传送门)(不喜欢更要订阅{:10_297:} )

http://xxx.fishc.com/forum/201803/21/151715umqz1qoywp11wjbq.gif

天圆突破 发表于 2018-8-27 20:49:16

身为小白刚刚接触前端框架,正在犹豫Vue和React先学哪个(Angular压根就不打算考虑{:10_277:})……正好看到这个,决定就先学Vue了!

wongyusing 发表于 2018-9-2 13:55:30

你好大神,我是学习python的web开发的。
我尝试用django或tornado作为后端,vue作为前端。
现在遇到的一个问题是,python的web框架的模板语言和vue冲突了。
因为他们共同的模板语言都是使用{{}}导致后端的程序报错。
如果我想把vue的{{}}改成两个中括号。能改吗???

不二如是 发表于 2018-9-2 14:04:30

wongyusing 发表于 2018-9-2 13:55
你好大神,我是学习python的web开发的。
我尝试用django或tornado作为后端,vue作为前端。
现在遇到 ...

理论上是肯定的可以的哈,vue也是通过正则匹配“{{}}”来操纵DOM

如果前后端分离写,不是太明白为什么会冲突

wongyusing 发表于 2018-9-2 15:58:46

问题主要出在,
在python的web框架运行中使用的模板文件,是会导致后端报错。
而直接使用浏览器打开模板文件却没有问题。
文字好难说明这个问题。
要不我晚上发个例子给你看看。
我现在在写django搭建博客的书。

wongyusing 发表于 2018-9-2 16:29:07

例子的链接例子
大神,关于这个问题的例子在vue_problem目录中。
详情都写在README.md了

鹰搏空 发表于 2018-9-4 16:41:26

wongyusing 发表于 2018-9-2 13:55
你好大神,我是学习python的web开发的。
我尝试用django或tornado作为后端,vue作为前端。
现在遇到 ...

https://cn.vuejs.org/v2/api/#delimiters 是这个吗

wongyusing 发表于 2018-9-5 16:03:13

鹰搏空 发表于 2018-9-4 16:41
https://cn.vuejs.org/v2/api/#delimiters 是这个吗

是的,谢谢了。
鱼C的小伙伴真给力。
我之前在vue的源代码里面尝试修改还是不行。
原来要我们手动新建的。

差点夹不住屁 发表于 2018-10-9 10:20:20

已看,谢谢老板

你很6 发表于 2018-10-20 15:24:45

{:5_109:}

lbjstudypython 发表于 2018-11-26 22:55:42

1.view 2.model 3.viewmodel

极地飞客 发表于 2018-12-6 18:47:24

有web开发找工作的吗?邀请擅长vue的工程师。qq:792414310

果酱淋 发表于 2019-3-16 04:16:31

ADFDSFDF

jack2018 发表于 2019-5-23 10:39:37

s

Baron_ 发表于 2020-2-18 10:58:47

gg

helloTOM 发表于 2020-3-19 13:33:17

mark一下vue是个好东西

Ruide 发表于 2020-4-7 17:11:23

Happy day!

suweixuan1998 发表于 2020-6-22 16:16:51

model/view/view-model

xuan1788 发表于 2020-6-28 13:31:55

3 model view

kmq116 发表于 2020-7-19 22:27:39

view viewmodelmodel
页: [1] 2
查看完整版本: 000 V Why Vue.js