Vue1+源码-深入解析Vue的path状态机
本文将深入解析Vue源码中的path状态机,介绍path状态机如何工作,以及状态机的应用情景。ps.我参考的是Vue1.0.26的源码,下面将主要针对源码中/parsers/path.js和/parser/expression.js对Vue的path状态机进行说明。什么是有限状态机有限状态机(finite-statemachine,简称FSM),是一种可以描述状态和动作的数学模型,在组件开发中常用在描述组件的状态和状态转换时触发的动作。有限状态机有以下特点:状态有限某一时刻必定处于一个状态在特定的条件下,一个状态可以向另一个状态转换这么看FSM有点抽象,现在具一个具体的例子:现在需要实现一个开关组件,开关组件有开和关两个状态。对应的,在“开”状态时,可以触发的动作是“关闭”;在“关”状态时,可以触发的动作是“开”,两个状态可以相互转换,使用JavaScript实现如下:functionStateMechine(){this.currentState='on';//当前状态}//状态列表,每个
Vuex 2 入门与提高(Vue.js 2 教程系列)
vuex计数器汇智网计数器应用的数据模型很简单:使用一个counter属性来表示计数器的当前值就够了。在Vue实例的created钩子中,应用启动了一个定时器,用来周期性地递增counter属性的值——由于counter是响应式属性,它的变化因而驱动了视图随之刷新。可以说counter抽象地表达了计数器视图的本质特征,当counter的值确定时,我们可以确定地推理出视图的表现。像counter这样可以决定视图表现的数据,在Vuex中就被称为状态。计数器应用相当简单,因此我们只需要定义一个状态就可以了。稍微复杂一些的应用,则可能需要我们抽象出成百上千的状态,这时候就需要分类管理了。例如,对于一个电商应用,我们将其购物车相关的状态归入cart类:
gulp入门看这篇就够了
前言我们经常会手工作一些代码压缩,文件目录拷贝以及整理的工作,还有一些比如编译以及文件合并,追加前缀等,而这些琐碎的工作实际已经有一个比较好的前端构建工具gulp可以帮我们批量实现。前言在目前的前端构建或者说自动化中,形成了三足鼎立的情况,分别是百度的fis,grunt,gulp.而无论是用户数还是使用难度,gulp都独占上风,众多的github项目选择了gulp作为构建工具。gulp的优点易于使用,通过代码优于配置的策略,让简单的任务简单,复杂的任务可管理。比grunt的使用简单,得到前端开发者的好评。利用Node.js流的威力,你可以快速构建项目并减少频繁的IO操作。插件品质高:Gulp严格的插件指南确保插件如你期望的那样简洁高质得工作。易于学习:通过较少的api,掌握Gulp毫不费力,构建工作尽在掌握:如同一系列流管道。图解gulp工作范畴Paste_Image.png官网相关链接gulp官网:http://www.gulpjs.com.cn/入门指南;http://www.gulpjs.com.cn/docs/g
vue入门教程
node_modulesnpm加载的项目依赖模块src这里是我们要开发的目录,基本上要做的事情都在这个目录里。里面包含了几个目录及文件:assets:放置一些图片,如logo等;components:目录里面放了一个组件文件,可以不用;App.vue:项目入口文件,我们也可以直接将组件写这里,而不使用components目录;main.js:项目的核心文件static静态资源目录,如图片、字体等test初始测试目录,可删除.xxxx文件这些是一些配置文件,包括语法配置,git配置等。index.html首页入口文件,你可以添加一些meta信息或同统计代码啥的package.json项目配置文件。README.md项目的说明文档,markdown格式基本的标签语法页面组成页面由html,css,js三部分组成
【500 Lines or Less】-【翻译练习】-【chapter 14】-【简单对象模型】-【第三部分】
原文链接:ASimpleObjectModel作者信息:CarlFriedrichBolz上一篇:《【500LinesorLess】-【翻译练习】-【chapter14】-【简单对象模型】-【第二部分】》译者注:休息结束,我们继续实例优化虽然对象模型的在之前的几节中发生了很多行为变化,但在最后一节中,我们将在没有影响任何行为的情况下进行优化。这种优化被称为maps,并在自编程语言的虚拟机中率先被使用。如今,它仍然是最重要的对象模型优化之一:它被用于PyPy和所有现代JavaScript虚拟机,如V8(其中优化被称为hiddenclasses)。目前的观察:在到目前为止实现的对象模型中,所有实例都使用完整的字典来存储它们的属性。字典是使用哈希映射来实现的,这消耗大量的内存。此外,同一个类的实例将会拥有同样的属性,比如,有一个类Point,它所有的实例都包含同样的属性x、y。maps优化利用了这一点。它有效地将每个实例的字典分成两部分。一部分存放所有实例共享的keys。
基础知识总结-前端面试(一)
打算写一个前端面试系列的知识,博客很久没有进行更新,更新的都是一些的基础知识。最近在投简历进行面试,说是面试,其实就是一个自己的使用自己大白话的知识概括吧。欢迎感兴趣的小伙伴进行学习或者提出建议和改正!大概计划章节如下1-1关于面试题2-1变量类型和计算-变量类型2-2变量类型和计算-强制类型转换2-3变量计算-理解json2-4原型和构造函数-构造函数2-5原型和构造函数-原型规则2-6原型和构造函数-原型链3-1作用域和闭包-变量提升3-2作用域和闭包-this3-3作用域和闭包-作用域3-4作用域和闭包-闭包4-1异步和单线程-异步4-2异步和单线程-单线程5-1日期常用API5-2数组常用API5-3undefined和null1-1关于面试题关于面试,虽然我个人还在面试过程当中,但是我有抽空看一点点的题目。我觉得认为万变不离其宗,基础知识把握好,题目做起来就不会错得那么难看哈哈哈。看到题目,1:看考点;2:知识点;
chanzhiEPS 6.6.1 正式发布,细节优化,修复 bug
蝉知企业门户系统是由业内资深开发团队开发的一款专向企业营销使用的企业门户系统,企业使用蝉知系统可以非常方便地搭建一个专业的企业营销网站,进行宣传,开展业务,服务客户。蝉知系统内置了文章、产品、论坛、评论、会员、博客、帮助等功能,同时还可以和微信进行集成绑定。功能丰富实用,后台操作简洁方便。蝉知企业门户系统6.6.1版正式发布了,这次升级主要是优化细节,修复bug。欢迎大家下载使用。一、修改记录css和js输出增加缓存时间信息修改附件输出的逻辑开启水印功能时如果没有GD库提示用户安装解决文章按照时间和热度排序不生效的问题后台在文章附件中上传的音视频,文章详情中可以显示优化文章列表页面动图的显示尺寸将默认的博客列表数量改为10优化后台留言评论的展示,已经有回复的反馈信息不再重复显示修复回复自己未审核通过的评论,评论内容不显示的bug评论留言按钮文字将保存改为提交导入主题后,正确显示主题包导入主题时给用户加密环境的相关提示解决导出主题时因判断路径错误素材被删除的问题简化后台文件安全验证的机制
vue.js在打包的时候自动区分正式服和测试服的api url
我们在编写一个vue.js的时候往往会有正式服务器和测试服务器。比如正式服http://api.marsdict.com测试服则为http://apitest.marsdict.com我们查看vuecli生成的webpack配置文件可以发现/build/webpack.dev.conf.js和/build/webpack.prod.conf.js两个文件中都通过newwebpack.DefinePlugin({'process.env':env}),向我们的js传递了一个process.env变量,那么我们就可以使用它了。例如我是在main.js这么实现区分的:Vue.use(Ajax,(function(){return{baseURL:process.env==="production"?"http://api.marsdict.com":"http://apitest.marsdict.com"
CSS技巧:网格项目的纵横比
CSS技巧:网格项目的纵横比之前,我们讲了纵横比方框,谈到一个技巧,就是运用填充来随心所欲地调整一个元素的长宽比例。这个技巧并不是经常能用到的,因为修整一个元素的高度是自找麻烦,但也不是没有这种情况出现。要降低这一风险,有一种方法,那就是伪元素(PsuedoElement)策略,让伪元素顶住其上一层元素,撑起纵横比。但是如果元素里的内容将元素顶得更高,那元素也会变得更高,纵横比就完蛋了。这一技巧可以在CSS网格布局中,应用到网格项目上去!当然,应用的方法有几种,都值得我们思考。记住,网格区域和占据区域的元素并不一定大小一致这一点我们刚讲过。那篇文章一开始是想写成这篇文章的一部分的,不过后来感觉这个概念还是挺重要的,应该分开写。知道了这一点,就引申出两个问题:是需要网格区域本身有个纵横比,然后里面的元素跟着拉伸?还是不管元素所在的网格区域如何,仅元素需要纵横比?情形1)只是内部的元素需要设纵横比。好,这个可能比较容易一些。只要保证元素的宽度和网格区域的宽度100%相同,然后加上伪元素来处理拉伸高度的纵横比。
VUE组件间的数据传递
众所周知,Vue是基于组件来构建web应用的。组件将模块和组合发挥到了极致。Vue是虽说吸取了AngularJs的MVVM的思想,但是它是单向数据流的,也就是说子组件无法直接改变父组件状态。下面总结出常用的组件消息传递的方式。父组件向子组件传递数据该方式的数据传递是遵循Vue单向数据流的规则的,因此使用起来十分的自然。若父组件的数据改变子组件的UI展现也随之变化。Parent.vue<template><div><h1>Parent</h1><child:name="childName"/><button@click="changeChildName">changethechildname</button></div></template><script>importChildfrom'./Child';exportdefault
长连接/websocket/SSE等主流服务器推送技术比较
原理:SSE本质是发送的不是一次性的数据包,而是一个数据流。可以使用HTTP301和307重定向与正常的HTTP请求一样。服务端连续不断的发送,客户端不会关闭连接,如果连接断开,浏览器会尝试重新连接。如果连接被关闭,客户端可以被告知使用HTTP204无内容响应代码停止重新连接。sse只适用于高级浏览器,ie不支持。因为ie上的XMLHttpRequest对象不支持获取部分的响应内容,只有在响应完成之后才能获取其内容。
Ubuntu下使用Django搭建前后端分离的全栈项目
本次开发使用的是Ubuntu16.04;Python3.6.2;Django1.11;开发工具使用了pycharm(Ubuntu);本文参考了很多Django和vue的相关源码与资料,我做了一些整理工作并结合我项目的实例与常见的问题,在本文中做总结和归纳;其他详情配置请见GitHub(当我们的项目完成时会在这里放出源码地址【+地址+】);第一步,在Linux环境中搭建Django项目//一开始我们会先使用静态文件做配载,随着项目进行我们将会逐步展现前后端分离的做法,并使用vue搭建一个完整的电商网站!//本文将不概述环境的搭配,以及Linux下环境开发,我认为你已经了解,并可以使用基本的操作,基于以上信息,下面让我们开始吧!1.目录下执行——Djangoadmin.pystartproject+‘你的Django项目名称’;创建Django项目2.cd进入项目目录下,执行——Djangoadmin.pystartapp+‘你的Django应用名称’;创建Django应用3.如果您已经下载并配置好了py
C#中四步轻松使用log4net记录本地日志
在这里,记录我在项目中使用log4net记录本地日志的步骤。在不会之前感觉很难,很神秘,一旦会了之后其实没那么难。其实所有的事情都是一样的,下面我就分享一下我使用log4Net的经验。第一步:首先从VisualStudio中的Nuget包管理中搜索下载Log4Netdll文件如下图:选择安装的项目(哪个类库中需要记录日志就勾选上)第二步:打开配置文件WinFrom就是App.configWeb就是web.config将以下配置信息加入
Vue-cli 命令行工具分析
文章来源:Vue-cli命令行工具分析Vue-cli命令行工具分析Vue.js提供一个官方命令行工具,可用于快速搭建大型单页应用。vue-webpack-boilerplate,官方定义为:full-featuredWebpacksetupwithhot-reload,lint-on-save,unittesting&cssextraction.目录结构:├──README.md├──build│├──build.js│├──utils.js│├──vue-loader.conf.js│├──webpack.base.conf.js│├──webpack.dev.conf.js│└──webpack.prod.conf.js├──config│├──dev.env.js│├──index.js│└──prod.env.js├──index.html├──package.json├──src
react系列——webpack3导入jQuery的新方案
本文的目的拒绝全局导入jQuery!!拒绝script导入jQuery!!找到一种只在当前js组件中引入jQuery,并且使用webpack切割打包的方案!测试环境以下测试在webpack3.8.1,jQuery3.2.1,react16+中进行思路分析如果说要我在react中全局引入jQuery,我是十分感动,然后拒绝的。但是,有时候可能react的一些库不够牛逼,还需要用到jQuery的相关插件来辅助完成,这些插件又和jQuery形成了依赖,最终,和我一样,你也可能需要在react中导入jQuery。这个时候webpack就派上用场了,你也别百度了,网上的方案我试过很多,说句不好听的,大部分都是乐色!举个例子,很多博客说用下面这种方案,还有其他一堆乱七八糟的辅助方案。newwebpack.ProvidePlugin({$:'jquery',jQuery:'jquery','window.jQuery':'jquery','window.$':'jquery',});
轻轻松松上手vue、vue-router、axios、express
轻轻松松上手vue、vue-router、axios、express写在前面vue是一个很优秀的库,但是你可能只是想在个别页面用到vue,并不是把vue作为技术栈来使用,或者你是一个初学者,想迅速的入门vue,那这篇文章可能是对你有帮助的本篇文章不打算用webpack、不打算用vue-cli脚手架等工具,只教你如果通过简单的引入对应js文件来使用vue和vue常用组件本文要实现的效果用express返回一段数据,用axios请求这段数据,然后用vue渲染出来,用vue-router切换页面代码解释首先在用express返回一个食物列表,然后在vue的mounted方法获取到数据,在注册3个组件,用vue-router进行切换,并把获取到的数据传入到home这个组件中去.本文把vue、vue-router、axios、express用最简单的方式结合在一起,大家能搞懂他们的基本用法就好。demo地址vue基础阅读vue其实没什么好写的,因为都被大家写透了,所以列了几篇文章给大家看一下,有兴趣就跟着练一练。第一个是vu
vue中watch用法
/*position:{x:0,y:0}*/exportdefault{watch:{position:{handler:function(cur,old){//此处如果写成箭头函数则无法获取this对象this.point.x=cur.x;},//深度观察deep:true},text:{handler:(cur,old)=>{console.log(cur);}},treedata(cur,old){console.log(cur);}}}
Vue导出json数据到Excel电子表格
网上看了很多文档感觉都不全,这里写一篇完整的详细教程。一、安装依赖(前面基本一样)npminstallfile-saver--savenpminstallxlsx--savenpminstallscript-loader--save-dev二、下载两个所需要的js文件Blob.js和Export2Excel.js。这里贴下下载地址:http://xiazai.jb51.net/201708/yuanma/Export2Exce_jb51.rar三、src目录下新建vendor文件夹,将Blob.js和Export2Excel.js放进去。四、更改webpack.base.conf.js配置在resolve的alias:'vendor':path.resolve(__dirname,'../src/vendor')五、在.vue文件中script部分data(){return{list:[{name:'韩版设计时尚风衣大',
如何使用Python制作网络爬虫
Python在近几年迅速咋程序界掀起了不小的波澜,而关于python的第三库也使广大程序员趋之若鹜,今天我们就由浅入深的探讨一下如何使用python做一个“网络爬虫”来抓取一些页面信息。今天我们使用的库(包含python自身携带的库和第三库)Python简介Python(英国发音:/ˈpaɪθən/美国发音:/ˈpaɪθɑːn/),是一种面向对象的解释型计算机程序设计语言,由荷兰人GuidovanRossum于1989年发明,第一个公开发行版发行于1991年。Python是纯粹的自由软件,源代码和解释器CPython遵循GPL(GNUGeneralPublicLicense)协议[2]。Python语法简洁清晰,特色之一是强制用空白符(whitespace)作为语句缩进。Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中[3]有特别要求的部
【0岁产品笔记】一个项目的起与落
一个月前,去某家公司面试实习生被问到描述一个项目的完整流程。当时作为一个没有任何经验的产品小白,用网上的文章东拼西凑地回答了小姐姐的问题。现在有幸以所接触到的项目大致梳理一个项目的起与落。由于公司规模、产品类型、习惯等问题,一个项目流程是稍稍有所出入的。1.需求方提需求:如:运营可能会策划某项活动,提出需求以实现盈利、拉新促活等目标。商务、市场人员、老板提出功能性需求等。2.收集需求:PM收集需求,整理为原型图形式(有些公司可能需整理好原型图和PRD文档)。3.碰需求:原型图整理后就要和需求方碰需求,以自己设计出来的方案是否满足要求,若有问题及时沟通再次整理。4.整理原型图和PRD:根据聊完需求的细节,从而完善原型图、撰写PRD文档。5.需求评审:这时候就需要PM拿着作业去开会了,评审参与人员主要有项目经理、前后端开发人员。UI是否参与得根据项目具体类型、公司习惯等来定。评审过程中出现的技术实现、逻辑遗漏问题都得不断修正,整理为最新的PRD文档。也会在评审会重确定开发完成时间,保证在上线前预留出测试的时间。6.