JavaScript
zengxianwen305
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于prototype, this, eval实现 call、apply、bind方法
// 模拟call实现Function.prototype.call_test = function(context){ var ctx = context || window ctx.fn = this let args = [] for(let i = 1 , len = arguments.length ; i< len; i ++){ args.push('arguments['+i+']') } let fn = eval('ctx.fn('+args+')') de原创 2020-11-25 21:28:15 · 211 阅读 · 0 评论 -
Vue render 函数详细讲解
Vue 推荐在绝大多数情况下使用模板来创建你的 HTML。然而在一些场景中,你真的需要 JavaScript 的完全编程的能力。这时你可以用渲染函数,它比模板更接近编译器。让我们深入一个简单的例子,这个例子里render函数很实用。假设我们要生成一些带锚点的标题:<h1> <a name="hello-world" href="#hello-world"> Hello world! </a></h1>对于上面的 HTML,你..转载 2020-09-17 14:30:31 · 607 阅读 · 1 评论 -
npm 脚本使用实践
在19年中做H5组件库的过程中,对于组件库版本管理上没有上心,每一次发布与变更,只是简单的修改一下package.json文件中version版本号,时间久了,就不记得自己曾经最新的版本号了,可以通过npm库中发布的版本对比找回,通过对npm使用指南调研,写了一个pkm工具来管理组件库发布的版本号代码如下let fs = require('fs')let packageJSON = require('./package.json')let options = process.argvlet原创 2020-09-11 14:44:02 · 391 阅读 · 0 评论 -
Vue 2.0 的数据依赖原理解析
首先让我们从最简单的一个实例Vue入手: const app = new Vue({ // options 传入一个选项obj.这个obj即对于这个vue实例的初始化 })通过查阅文档,我们可以知道这个options可以接受:选项/数据datapropspropsData(方便测试使用)computedmethodswatch转载 2017-12-14 10:00:37 · 512 阅读 · 0 评论 -
express req 获取入参方式
1、req.params //获取路由信息,例如: /user/:id 例如:127.0.0.1:3000/index,这种情况下,我们为了得到index,我们可以通过使用req.params得到,通过这种方法我们就可以很好的处理Node中的路由处理问题,同时利用这点可以非常方便的实现MVC模式;(注:默认为{})2、req.query //get 方法的获取参数,例如:?id=12原创 2017-12-20 18:19:44 · 1711 阅读 · 0 评论 -
express 使用html 模板
创建好node web项目后,项目会生成一个app.js文件其中默认配置是 使用jade模板app.set('view engine', 'jade');日常工作中使用较多的是 html文件,对jade模板并不熟悉,下面是配置使用html模板的方式首先引入引入ejs模块,如果没有安装改模块,要安装 ,安装命令是 npm install ejs -save原创 2017-03-06 14:56:44 · 536 阅读 · 0 评论 -
Vue点点坑及Vue的学习过程
1、刚刚入手vue时,使用vue-resource发送ajax跨域请求失败,提示信息是Content-type不正确,对比jQuery发送ajax跨域成功,查找vue API 发现处理Application/json请求失败时,启用emulateJSON配置,请求会以application/x-www-form-urlencoded最为MIME类型,类似普通表单方式提交原创 2017-12-19 16:50:13 · 435 阅读 · 0 评论 -
前端性能优化
减少http请求次数原创 2017-11-01 10:36:30 · 257 阅读 · 0 评论 -
js 对象克隆
看栗子:let obj = {obj_pro_1:'1',obj_pro_2:2}let obj2 = obj;obj2.obj_pro_2=4;console.log(obj.obj_pro_2);//4,此种方式并不是复制,而是把对象 obj 的引用给了obj2,两个对象同时只想一个堆对象,操作一个对象,会影响另一个对象,如若想复制一个对象,需原创 2017-09-25 10:24:38 · 241 阅读 · 0 评论 -
flex 布局
应用场景:在做智能卖场项目的过程中,所有的页面都会有一个底部通栏,通栏含有的元素例如,首页,优惠券,购物车,搜索,活动,我的选项,根据location所在的页面展示不同的底部通栏,例如首页中展示以上功能除去首页的四个,搜索页中展示除去搜索功能和活动功能的三个问题:屏幕宽度一定,还要做到根据功能自适应展示,功能间距相等,如果采用盒子模型布局方式,需要针对不同数量的功能模块写出不同的样式,采用fl原创 2017-06-27 16:36:21 · 884 阅读 · 0 评论 -
vue 虚拟dom实现原理
Vue版本: 2.3.2virtual-dom(后文简称vdom)的概念大规模的推广还是得益于react出现,virtual-dom也是react这个框架的非常重要的特性之一。相比于频繁的手动去操作dom而带来性能问题,vdom很好的将dom做了一层映射关系,进而将在我们本需要直接进行dom的一系列操作,映射到了操作vdom,而vdom上定义了关于真实dom的一些关键的信息,vdom完全是转载 2017-12-14 10:03:33 · 37566 阅读 · 5 评论 -
vue-resource Android 5.1.1版本白屏
在开发项目的过程中,使用了vue-resource,vue-resource使用了很多Es6新语法及新变量,例如promise,由此引发了页面白屏的问题,经测试 努比亚z7、vivox7 等Android 系统为5.1.1,使用乐视2、红米note4x 系统分别为6.0及6.0.1不会引发白屏问题使用 polyFill包支持,polyFill中针对低版本的Android、ios系统支持Es6预原创 2017-12-28 16:27:30 · 3661 阅读 · 2 评论 -
生成 min-max之间n个不重复的随机数
var getRamdom = function (min,max){ //生成随机数return Math.random() * (max - min) + min;}function dealRepeat(set,min,max){ //去重if(set.has(undefined)){set.delete(undefined);set.add(getRamdom(原创 2018-01-16 17:02:11 · 1172 阅读 · 0 评论 -
生成斐波那契数列数组
const fibonacci = ((init=[0,1],n)=>{const fib = (n)=>{let result = init[n];if(typeof result !=='number'){result=fib(n-1)+fib(n-2);init[n]=result;}return result;}fib(n);return init原创 2018-02-02 10:32:22 · 679 阅读 · 0 评论 -
项目中遇到的兼容性问题
1、百度、QQ浏览器拨打电话问题场景:使用标签 tel:协议,一键拨打电话功能下,正对含有分机号的情况,通常是拨打分机号后需以“#”结束,App端能识别“#”,IOS、Android操作系统上的部分浏览器上不能识别“#”,将其解析成“%23”,或者不识别“#”。解决方案:经查证浏览器解析该字符是会进行转码成16进制字符,经实践,将“#”字符写成“%2原创 2016-06-23 14:43:35 · 2042 阅读 · 0 评论 -
浅复制与深复制
https://juejin.im/post/5abb55ee6fb9a028e33b7e0a转载 2018-03-29 16:42:22 · 188 阅读 · 0 评论 -
JS Escript 数组之使用方法总结
Escript 中常见的数据结构有基本类型和对象类型,其中对象类型中Array曝光率非常非常高Array常用方法总结如下栈方法Array.pop() 出栈方法参数:无返回值:出栈元素Array.push(item) 入栈方法item数据类型可以为任意的参数:任意类型、任意数量的元素返回值:修改后的数组的lengthlet a = [1,2,3]conso...原创 2019-07-18 17:16:58 · 407 阅读 · 0 评论 -
ajax跨域遇到的问题
开发项目过程中遇到的ajax 跨域问题现象:使用两种方式处理ajax跨域,结果不同1,使用jquery的$.ajax方式处理跨域么有问题,有正常返回2,使用vue-resource插件处理跨域,失败提示Content-type类型不对以上两种方式均采用默认方式处理跨域,查请求数据后发现,两种方式的Content-type不一样,其中使用方式1中Content-type值原创 2017-06-26 16:42:46 · 406 阅读 · 0 评论 -
单页应用
单页应用Single-Page-Application实现单页应用的方案有很多种,例如react,node-express,vue等,近期学习Vue,看过vue-cli,挺有意思的,实现单页应用其实很方便,学些使用vue-cli实现单页应用,请先掌握webpack使用,vue的基本使用中的组件,单页组件,路由等知识1 安装 nodejs 见node官方文档 安装教程,不需要单原创 2017-06-23 14:33:08 · 438 阅读 · 0 评论 -
ES6之模板字符串
项目中遇到这样一个问题,商品详情中含有 单引号的一半 如 李家'蜂蜜,另一种情况是含有 双引号的一半 如王家 " 葡萄,如果将这类数据作为单数传入js function中是就会报js 错,那么我们可以用 反撇号 ` 来定义变量 ,这样就能够规避掉这类因为单引号或者是双引号带来的js 错误转自infoq 原文地址:http://www.infoq.com/cn/articl原创 2016-09-12 14:47:19 · 882 阅读 · 0 评论 -
设计模式之工厂方法和抽象工厂
/*** Created by zengxianwen on 2016/6/13.*/console.log('start');/***工厂方法模式start***//*** 工厂方法模式* @param type* @param content* @returns {Factory}* @constructor*/var Factory = fun原创 2016-06-23 14:45:35 · 255 阅读 · 0 评论 -
javascript 面向对象特性之继承
/*** Created by zengxianwen on 2016/6/15.*/console.log('start javascript oo');//继承/*** 类式继承* @constructor*/function SuperClass(){this.superClass = true;this.books =原创 2016-06-23 14:45:08 · 260 阅读 · 0 评论 -
JavaScript对象操作之浅复制
*** 浅复制* @returns {F}*/function prototypeExtend() {var F = function () {},args = arguments,i = 0,len = args.length;for(; i len ; i ++){for(var j in args[i]){F.prototype[j] = args[i原创 2016-06-23 14:44:33 · 199 阅读 · 0 评论 -
JavaScript对象表示方式
/*** Created by zengxianwen on 2016/6/13.*//*** 对象之字面量表示方式* @type {{checkName: checkObject.checkName, checkEmail: checkObject.checkEmail, checkPwd: checkObject.checkPwd}}*/var checkObj原创 2016-06-23 14:44:05 · 387 阅读 · 0 评论 -
日常开发总结
/***本函数库收纳了常用的js应用*目前还在不断的维护中*author 曾宪文、*start time 20151204*//**验证邮箱函数* return true 格式正确,false 格式不正确*/function verifyMail(val){var reg=/原创 2016-06-23 14:42:27 · 362 阅读 · 0 评论 -
js 综合基本知识题目测试
1 function Foo() {getName = function () { alert (1); }; return this; } Foo.getName = function () { alert (2);}; Foo.prototype.getName =function () { alert (3);}; var getName = fu转载 2016-06-23 14:41:35 · 337 阅读 · 0 评论 -
js设计模式之状态模式
var ResultState = function(){var States = {state0:function(){console.log('first');},state1:function(){console.log('second');},state2:function(){console.log('third');},state3:func原创 2016-07-03 18:10:37 · 252 阅读 · 0 评论 -
最佳实践之JS-状态模式
前因:项目接口会返回很多状态码,通常的做法是使用ifelse 去处理状态,或者将if else 封装成一个方法,调用但是即便用方法封装,还是完全避免用 if else 去处理状态,今天我们采用一种新的尝试,使用状态模式来进行N多种状态的下的逻辑处理,来避免N多种状态下反锁的if else 语句维护困难的问题。状态模式:不同的状太会产生不同的行为,即当一个对象内部状态改变时,会导致其行原创 2016-09-01 09:23:49 · 540 阅读 · 0 评论 -
js --迭代器模式
var Iterator = function(items,container){var container = container && document.getElementById(container)||document,items = container.getElementByTagName(items),length = items.length,index = 0 ;v原创 2016-09-01 18:31:55 · 261 阅读 · 0 评论 -
js--迭代器之数组与对象迭代器
之所以将这两种迭代器写在同一篇中是因为基于面向对象思想,数组也是对象//数组迭代var eachArray = function(arr,fn){var i = 0 ,len = arr.length;for(; i if(fn.call(arr[i],i,arr[i])===false){break;}}}//对象迭代var eachO原创 2016-09-05 14:38:13 · 2799 阅读 · 0 评论 -
vue学习之vue-resource
在学习vue的过程中,初期vue只是起到了UI操作的功能,数据请求都是通过jQuery的ajax来处理,总觉的怪怪的,大家都在盛传vue有多么的强大,一番搜索之后发现,vue也有异步请求的插件,本文简单介绍下vue-resource,闲话少说上菜vue-resource 特点1. 体积小vue-resource非常小巧,在压缩以后只有大约12KB,服务端启用gzip原创 2017-06-26 10:51:25 · 1159 阅读 · 0 评论 -
日期格式化
var format = 'yyyy-mm-dd:hh:mm:ss'function formatDate (source, format ) { let date = new Date(); if (typeof source === 'string') format = source; if (typeof source === 'number') da原创 2017-05-26 10:34:16 · 252 阅读 · 0 评论 -
Node.js+Express构建Http服务(GET方式和POST方式)
注意文章中的post 配置app.configureapp.configure(function() { //默认情况下Express并不知道该如何处理该请求体,因此我们需要增加bodyParser中间件,用于分析 //application/x-www-form-urlencoded和application/json //请求体,并把变量转载 2017-03-16 09:43:01 · 398 阅读 · 0 评论 -
javascript canvas 绘图 2d 渐变 阴影
原文链接 http://lib.youkuaiyun.com/article/javascript/61057转载 2017-03-23 09:19:18 · 338 阅读 · 0 评论 -
node 链接mysql 数据库及增删改查操作
准备工作:安装myql 数据库,建数据库 testnode, 建表node在项目的package.json文件中添加依赖 "dependencies": { "mysql": "^2.13.0"}package.json文件目录下执行,npm install mysql -save等待安装mysql 依赖,安装好后新建文件 mysqlconf.js文件,编原创 2017-03-10 17:59:58 · 379 阅读 · 0 评论 -
html5 上传图片实践
使用场景:移动端 HTML5 页面,意见反馈系统中需要开发一个图片上传功能,使用input file 后页面太过丑陋,使用替换样式,将 input file 设置成display : none,上传功能又失效,经过一番搜索,尝试将 input file 透明度设置成完全透明,并将其罗列在替换dom元素上方,再调用input file 的onchange 方法读取文件,使用 reader 读取文原创 2017-02-24 14:59:14 · 272 阅读 · 0 评论 -
基于原型继承的链模式
var A = function(selector,context){return new A.fn.init(selector,context);}A.fn = A.prototype = {constructor:A,init:function(selector,context){this.length = 0 ;context = context||documen原创 2016-09-28 15:24:06 · 224 阅读 · 0 评论 -
js-迭代器值同步变量迭代器
项目中曾经遇到过这样一个问题,上传图片模块最多上传4张,但是每张图片都是可以删除的,那么上送到后台的图片数据就需要根据页面上最终的图片数组结果上送,而不是你上传到云服务端的图片数量,基于此考虑,各种翻资料,还真的找到了相近的一款迭代器,同步变量迭代器//同步变量迭代器var A = {common:{},client:{user:{username:'AClient原创 2016-09-05 14:58:43 · 844 阅读 · 0 评论 -
js设计模式至观察者模式--不同模块间解耦
var Observer = (function(){var _messages = {};return {regist:function(type,fn){if(typeof _messages[type] ==='undefined'){_messages[type] = [fn];}else{_messages[type].push(fn);}},fi原创 2016-07-03 18:03:53 · 450 阅读 · 0 评论
分享