js代码

gulp实时编译less,压缩合并requirejs模块文件

蓝咒 提交于 2019-12-25 20:06:34
gulp的使用命令简单,就几个,gulp的简单使用教材可以参考一点的gulp使用教材(http://www.ydcss.com/archives/18)。 下面就简单的介绍这些命令如何互相配合的完成前端的构建工作。 项目结构: 首先全局安装gulp,使用命令:npm install -g gulp 一:gulp实时编译less var gulp = require('gulp'); var gulpLess = require('gulp-less'); var gulpMinifyCss = require('gulp-minify-css'); var gulpSourcemaps = require('gulp-sourcemaps');   这4个插件就是目前用到的,需要其他功能可以自己添加。gulp-less是编译less用的插件,gulp-minify-css是压缩css的插件,gulp-sourcemaps是便于压缩后代码调试的。 gulp.task('allLess', function(){ gulp.src('src/less/**/*.less') .pipe(gulpSourcemaps.init())//sourcemaps .pipe(gulpLess())//编译less .pipe(gulpSourcemaps.write()) .pipe(gulp

前端性能优化

空扰寡人 提交于 2019-12-25 19:47:59
在讲前端性能优化前,先了解下一个网站在浏览器端是如何渲染的 1、首先输入url地址 2、浏览器根据url向服务器发送http请求 3、服务器端接收请求并返回html代码返回浏览器 4、浏览器接收html代码并解析生成页面 5、解析页面过程   a、HTML文档生成DOM和CSS生成CSSOM   b、DOM和CSSOM生成RenderTree   c、有了RenderTree知道了浏览器中有那些节点,各个节点的CSS定义绘制成layout render tree   d、有了layout render tree 浏览器使用浏览器UI绘制每个节点生成 paint render tree 资源的合并和压缩   减少http请求,减少请求资源的大小    html压缩     html压缩是压缩文本中空格,制表符,换行符,注释等    css压缩     无效代码删除     代码合并   js的压缩和混乱     无效字符删除,注释     代码语义的缩减和优化     代码保护    文件合并     减少http请求     问题       首屏加载慢       缓存失效问题     方案       公共库合并       不同页面的合并    开启gzip 图片先关优化    png8/png24/png32之间的区别     png8 支持透明,文件大小小    

js实现无限极分类

落爺英雄遲暮 提交于 2019-12-25 18:52:52
转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 因为要实现部门通讯录,后台传来的数据是直接从数据库里拿的部门表,所以没有层级分类,只有parentId表示从属关系,所以分类的事情就交给我来做了。 不能说效率多高,只是说能实现了。 其实ACMer或者学过点算法和数据结构的应该知道这其实就是一个树,用数组存罢了,用数组存树的方法相信各位ACMer已经用的不要不要的了,所有并没有什么难度,知道思路就很好写了。 思路 :获取到后台传来的数组dep,然后新建一个数组list,将dep遍历一遍,获取到每个节点的parentId,用parentId作为下标插入到list数组里面。 至此,构树完成。 接下来就是遍历了,我是采用递归遍历的,比较简洁,各位大神有什么更好的遍历方法也欢迎分享。 首先获取到根节点(也就是最顶级的那个分类)的下标,然后遍历这个下标中的每个节点的信息,并找出这个节点的id,然后重新传入递归函数即可。 下面是代码实现,注释依旧很清楚。相信应该能看懂,看不懂的多看几遍,照着码一遍应该就懂了。再不懂的,请照着程序走一遍应该就懂了。。要是....就转行吧。 1 //无限极分类创建部门列表 2 //递归创建无限极分类 3 function createList(list,index) 4 { 5 //获取当前index节点的子节点的信息 6 var tmp = list

面试篇—js

心已入冬 提交于 2019-12-25 18:35:05
1.数据类型  (1)基本数据类型:Number String Null Undefined Boolean  (2)复杂数据类型:Object  (3)基本类型:按值访问,可以操作保存在变量中的实际的值  (4)引用类型:引用类型中的值是保存在内存中的对象 1.http方法(get和post的区别)  (1) get可以被浏览器缓存,post不可以  (2) get有字符限制,不同浏览器有差异(不能大于2KB),post没有。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB  (3) get安全性低,账号密码出现在url上,被缓存了。 2.箭头函数和普通函数的区别  (1) 箭头函数作为匿名函数,不能使用new  (2) 箭头函数不绑定this,会捕获上下文this,作为自己的this值,任何方法都改变不了this指向,call(),bind(),apply()  (3) 箭头函数不绑定arguments,用rest参数替代 3.例举强制类型转换和隐式类型转换  (1)强制:String(),Boolean(),Number(),parseInt(),parseFloat()  (2)隐式:+ ,- ,== ,=== 4.typeof返回那些数据类型   function,string,boolean,number

JS学习笔记——对象引用

十年热恋 提交于 2019-12-25 18:29:48
  今天看学习视频,温习了这部分知识,特此记录下来。   JS中的数据类型分为 基本类型 和 引用类型 ,基本类型有String、Number、Boolean、Null和Undefined,引用类型有Object、Array、Data、RegExp、Function等。基本类型的值是简单的数据段,引用类型的值指的是多个值构成的对象。 1 num1 = 10 2 num2 = num1 3 console.log(num2) // 10 4 num2 = 30 5 console.log(num2) // 30 6 console.log(num1) // 10   上述代码中,num1的值为10,在给num2赋值的时候,相当于拷贝了num1的副本然后赋值给了它,并且 num1和num2可以参加任何操作而互相不影响。 在看下面一段代码: 1 var arr1 = [1, 2, 3] 2 var arr2 = arr1 3 arr1.push(4) 4 console.log(arr2) // [1, 2, 3, 4] 5 console.log(arr1) // [1, 2, 3, 4]   可以看出从一个变量向另一个变量赋值引用类型的值,同样还是会将存储在变量对象中的值复制一份放到新变量分配的空间中,不同的是,复制的这个副本是一个 指针 ,并不是具体的对象,

React路由

♀尐吖头ヾ 提交于 2019-12-25 16:39:40
React路由 1.React路由的安装 在项目命令行中,执行 cnpm install react-router-dom -S 下载到生产环境的依赖中。 在组件中通过对象的解构方式去获取到react-router-dom内置组件,在组件中,按需引入内置组件,在页面中进行使用: 2.React路由内置组件 HashRouter表示一个路由的根容器,将来所有的路由相关的东西,都要包裹在HashRouter里面,而且一个网站中,只需要使用一次HashRouter就好了; Route表示一个路由规则,在Route上,有两个比较重要的属性,path,component Link表示一个路由的链接 2.1HashRouter和BrowserRouter的区别; BrowserRouter:   原理是H5的history API,IE9及以下不兼容,需要由web server支持,在web client这边window.location.pathname被react router解析,example.com/react/route    HashRouter:   原理是URL的hash,不需要由web server支持,因为它的只有‘/’path需要由web server支持,而#/react/route URL不能被web server读取,在web client这边window

js跳出循环的方法区别(break,continue,return)

 ̄綄美尐妖づ 提交于 2019-12-25 15:43:47
转自: http://blog.csdn.net/fxss5201/article/details/52980138 js编程语法之break语句: break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句。 由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才是合法的。 如果一个循环的终止条件非常复杂,那么使用break语句来实现某些条件比用一个循环表达式来表达所有的条件容易得多。 for(var i=1;i<=10;i++) { if(i==8) { break; } document.write(i); } 当i=8的时候,直接退出for这个循环。这个循环将不再被执行! //输出结果:1234567 js编程语法之continue语句: continue语句和break语句相似。所不同的是,它不是退出一个循环,而是开始循环的一次新迭代。 continue语句只能用在while语句、do/while语句、for语句、或者for/in语句的循环体内,在其它地方使用都会引起错误! for(var i=1;i<=10;i++) { if(i==8) { continue; } document.write(i); } 当i=8的时候,直接跳出本次for循环。下次继续执行。 //输出结果:1234567910

Js es6中扩展运算符(...)

僤鯓⒐⒋嵵緔 提交于 2019-12-25 15:38:46
拓展运算符,是es6一个很好的特性,它们可以通过减少赋值语句的使用,或者减少通过下标访问数组或对象的方式,使代码更加简洁优雅,可读性更佳。下面我将列出拓展运算符的主要应用场景,以及相关知识。 1、在函数调用时使用拓展运算符。 以前如果我们想将数组元素迭代为函数参数使用,一般使用Function.prototype.apply的方式。 function myFunction(x, y, z) { console.log(x+""+y+""+z); } var args = [0, 1, 2]; myFunction.apply(null, args); 有了展开语法,我们可以这样写。 function myFunction(x, y, z) { console.log(x+""+y+""+z); } var args = [0, 1, 2]; myFunction(...args); 提示: ...arr返回的并不是一个数组,而是各个数组的值。只有[...arr]才是一个数组,所以...arr可以用来对方法进行传值 2、数组和对象的拷贝。 var arr1 = [1,2,3]; var arr2 = [...arr1]; arr2.push(4); console.log(arr1 === arr2); // false console.log(arr1); // [1,2,3]

2016值得关注的语言平台、JS框架

為{幸葍}努か 提交于 2019-12-25 15:31:12
语言和平台 Python 3.5 在今年发布了,带来了很多新特性 比如 Asyncio,,为你带来了类似 node.js 的事件机制,还有type hints。 鉴于Python 3 终于真正地火起来了我们强烈建议你替换掉 Python 2. 几乎所有的库都已经支持 Python 3 了,所以现在是一个升级你的历史遗留代码的好时机。 PHP 7 是一个重大的新版本,这个版本修复了很多问题并且带来了新特性和性能提升(看看概览) 。 PHP 7 大约比 PHP 5.6 快2倍, 这对一些大型项目还有WordPress 和 Drupal之类的CMS系统影响很大。 我们强烈推荐 PHP之道,已经更新到最新的PHP7版本。如果你需要更快的速度并且不介意换一个解释引擎的话,可以试试Facebook在用的 HHVM。 JavaScript 也以ES2015 标准 (大家通常叫做 ES6)的形式发布了更新。为我们带来了激动人心的新功能。 感谢大多数浏览器版本的快速更新,对 ES2015 的支持已经非常棒了,并且还有 Babel.js 这样的工具可以让你的新代码跑在低版本浏览器上。 Node.js 在这一年变化很多,开发者社区曾经分裂成 Node.js 和 io.js,然后又再度合并。 经历过这些之后的结局就是我们得到了一个有很多代码贡献者积极维护的项目,并且拥有了两个版本的 Node :

百度地图调用js代码

白昼怎懂夜的黑 提交于 2019-12-25 14:00:40
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>百度地图调用</title> <style type="text/css"> html { height: 100%; } body { height: 50%; margin: 0px; padding: 0px; } #container { width:600px; height: 500px; } </style> <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script> </head> <body onload="loand()">