这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战。 我采用的是一个非常流行的库require.js。 一、为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了。后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载。下面的网页代码,相信很多人都见过。 <script src="1.js"></script> <script src="2.js"></scrip
最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了。后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载。下面的网页代码,相信很多人都见过。
这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战。 我采用的是一个非常流行的库require.js。 一、为什么要用require.js? 最早的
Node.js 的出现使得用 Javascript 写服务端应用成为可能。Node.js 由 C++ 编写而成并且构建于 V8 引擎之上,因此运行得很快。一开始,Node.js 只是想运行于服务端环境,但是开发者们显然不满足于此,开始创造各种工具来实现自动化任务。也因为此,基于 Node 的前端自动化工具(如Grunt, Gulp 和 Webpack)的出现也给前端开发带来了翻天覆地的变化。
尤其是在一些业务比较复杂的场景,原生 JavaScript 实现可能很啰嗦,但使用第三方工具库,通常一行代码就搞定了。
英文 | https://blog.bitsrc.io/5-string-manipulation-libraries-for-javascript-9ca5da8b4eb8
underscore.js一直听说都是一个很经典的库,很适合新手入门,所以历经小半年断断续续的学习,总算是把它敲完了。然后又过了一段时间到了现在,回过头来,打算自己再总结一番,写个源码解析并综合所学到的写下具体用法。 这里是我学习underscore的网站: http://www.qdfuns.com/house/17398/note/class/id/bb6dc3cabae6651b94f69bbd562ff370/page/2.html https://github.com/hanzichi/underscore-analysis http://yalishizhude.github.io/ 以及官方文档: http://www.css88.com/doc/underscore/docs/underscore.html http://www.css88.com/doc/underscore/ 真的很感谢以上大神们的帮助! underscore.js里面的函数分集合(Collections)、数组(Arrays)、函数(Functions)、对象(Objects)、实用功能(Utility)和链式语法(Chaining)这几部分组成,我也是按照每部分去解析的。 然后,也是抱着巩固一下知识的心态写得自我总结,并希望能帮到你。 水平有限,有错误也希望大家能够指出,共同交流,一起进步。
值为 true 时,加载器不会删除动态插入的 script 标签。插件也可以根据 debug 配置,来决策 log 等信息的输出。
上一篇文章写了 jQuery整体架构,学习 jQuery 源码整体架构,打造属于自己的 js 类库
javascript语言实现,ES6规范(使用babel编译器将es6转换为es5,webpack只支持部分es6):
理论上,require.js加载的模块,必须是按照AMD规范、用define()函数定义的模块。,require.js是否能够加载非规范的模块呢?回答是可以的。这样的模块在用require()加载之前,要先用require.config()方法,定义它们的一些特征。举例来说,underscore和backbone这两个库,都没有采用AMD规范编写。如果要加载它们的话,必须先定义它们的特征。shim属性,专门用来配置不兼容的模块。
Math.random()方法返回大于0小于1的一个随机数。 Math.floor()方法执行向下舍入,即它总是将数值向下舍入为最接近的整数。
requireJS(http://www.requirejs.cn/)是一个JavaScript模块加载器。它非常适合在浏览器中使用,使用RequireJS加载模块化脚本将提高代码的加载速度和质量。
undefined派生自null,所以两者相等(==),但是不全等(===),所以这里如果obj是undefined则会返回false。
前两篇简单讨论了requirejs+angular和requirejs+backbone的架构,这两个架构,估计也是国内最热门的做法。 浅谈HTML5单页面架构(一)——requirejs + angular + angular-route 浅谈HTML5单页面架构(二)——backbone + requirejs + zepto + underscore 不过,这一篇,我想进一步探讨一下这两个框架的优缺点,另外,再进一步,抛开这两个框架,回到本真,自己搞个简单的路由一样可以实现单页面。 这个对于刚做前端开
随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作、模块复用、单元测试等等一系列复杂的需求。
答:因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。 但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,我有我的写法,岂不是乱了套!
前几次介绍node的ejs后台模板进行数据渲染们今天简单介绍一下咱们前端的模板引擎underscore的数据渲染!
随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作、模块复用、单元测试等等一系列复杂的需求
这几次的VUE训练营,开始用了现代的前端的开发技术,学习了npm的使用,现在不用学化妆术CSS就能做成很漂亮的应用了。现代的VUE组件,非常适合VFP狐友们的应用。毕竟VFP开发MIS那真是爽爆了。
项目开发过程中,PM说系统只要在一个特定的浏览器中运行就好,但是在其他的浏览器中不能出现逻辑的错误,所以在开发过程中,前端和后台选择是Chrome浏览器,没有仔细测试Firefox和IE。但是昨天PM反映了一个bug,是浏览器兼容性bug,在Chrome浏览器下工作正常,但是在IE浏览器不报错,但是逻辑是不对的。剔除复杂的业务逻辑,代码精简如下: <html> <head> <meta charset="utf-8"/> <script type="
NPM 是Node.js的包管理工具。它的重要性就像 gem 之于 Ruby 一样。Node.js 与 NPM的关系是密不可分的。
云函数产品文档:https://cloud.tencent.com/product/scf
前端向后端(api)请求一个文件下载,请求成功后后端(api)直接返回文件的内容,而不是返回文件的url,如果返回了文件的url,前端直接window.open即可完成下载。但是如果是文件内容,一种更好的方法是通过动态创建表单的方式去请求下载,请求的参数可以动态创建input框的方式去完成。
Backbone.js是一款JavaScript MVC应用框架,强制依赖于一个实用型js库underscore.js,非强制依赖于jquery;其主要组件有模型,视图,集合,路由;与后台的交互主要是通过Restful JSON 进行数据传输;
上一篇《浅谈HTML5单页面架构(一)——requirejs + angular + angular-route》探讨了angular+requirejs的一个简单架构,这一篇继续来看看backbon
《JavaScript Dom编程艺术》 《JavaScript面向对象编程指南(基础)》 《JavaScript高级程序设计》 《高性能JavaScript》 《学习JavaScript数据结构和算法》 《javascript函数式编程》 《JavaScript模式 》 《你不知道的JavaScript-上》 《JavaScript设计模式》 《JavaScript设计模式与开发实践》 《你不知道的JavaScript-下》
Underscore.js是很有名的一个工具库,我也经常用他来处理对象,数组等,本文会深入解析Underscore源码架构,跟大家一起学习下他源码的亮点,然后模仿他写一个简单的架子来加深理解。他的源码通读下来,我觉得他的亮点主要有如下几点:
现在大家最感兴趣的 JS 库和框架是什么? jQuery 91.5% Underscore 38.6% AngularJS 28.5% Backbone 18.6% React 15.7% Knockout 5.5% Ember 4.6% Polymer 3.3% 项目中使用的 JS 库/框架 是什么? jQuery 56.53% AngularJS 15.42% 只用原生不用库 11.13% R
模块化的开发方式可以提高代码复用率,方便进行代码的管理。通常一个文件就是一个模块,有自己的作用域,只向外暴露特定的变量和函数。目前流行的js模块化规范有CommonJS、AMD、CMD以及ES6的模块系统。参见阮一峰老师的文章 module-loader[1] 。
模块化的开发方式可以提高代码复用率,方便进行代码的管理。通常一个文件就是一个模块,有自己的作用域,只向外暴露特定的变量和函数。目前流行的js模块化规范有CommonJS、AMD、CMD以及ES6的模块系统。参见阮一峰老师的文章 module-loader 。
collection是model对象的一个有序的集合,概念理解起来十分简单,在通过几个例子来看一下,会觉得更简单。
web前端开发人员经常会用到一些现成的js库(框架)。框架的使用增加了代码的模块化和可复用性,目前主流的js框架有很多,各有侧重,我们通常只会用到其中一小部分子功能,这里总结了2020年11个热门JavaScript 库。
不久前看过一篇不错的文章,作者用了15行代码就实现了一个简单的模板语法,我觉得很有趣,建议在阅读本文之前先看一下这个,本文不会讲解一些细节实现,这里是传送门:只有20行的Javascript模板引擎 这个模板语法实现的核心点是利用正则表达式来匹配到模板语法里面的变量和JS语句,遇到变量就将匹配到的字符串 push 到一个数组中,遇到 JS 语句就执行,最后再把数组中的字符串 join 起来,用 Function 来解析执行这串字符串,最终将执行后的结果放到指定 DOM 节点的innerHTML 里面。 但是这个模板语法还是有很多不足,比如不支持取余运算,不支持自定义模板语法,也不支持if、for、switch 之外的JS语句,缺少 HTML 实体编码。 恰好我这阵子也在看 underscore 源码,于是就参考了一下 underscore 中 template 方法的实现。 这个是我参考 template 后实现的模板,一共只有60行代码。
前几日有在Javascript数组操作一文中稍提及了数组的length属性;深入一点探究,就发现JS这length确有许多难为所知的特性。这就边学边探究下这朵奇葩属性;这里边深入边记载。 可变的数组length属性 和其他大多数语言不同的是,JavaScript数组的length属性是可变的,这一点需要特别注意。当length属性被设置得更大时,整个数组的状态事实上不会发生变化,仅仅是length属性变大;当length属性被设置得比原来小时,则原先数组中索引大于或等于length的元素的值全部被丢失。下面
Backbone的view是用来显示你的model中的数据到页面的,同时它也可用来监听DOM上的事件然后做出响应。 先要给出一个页面的大体代码,下面的所有试验代码都要放到这里面:
1.js-sequence-diagrams的作用 将简单的文本行绘制成手绘风(或是简单的直线条)的流程图。优点是不需要复杂的数据结构。 ---- 这次做一个数据可视化的网站,我和后端最后一个要攻克的问题是把dataset=[[{"228056": {"2219889": 2013}}, {"108833": {"2059058": 2013}}, {"249854": {"286000": 1997}}, "99"],[{"228056": {"694932": 2004}}, {"32830": {"4
通常情况下,通过对构造函数使用 new 会返回一个绑定到 this上的新实例,所以我们可以在 new 出来的对象上直接用 . 访问其属性和方法。如果在普通函数中也返回当前实例,那么我们就可以使用 . 在单行代码中一次性连续调用多个方法,就好像它们被链接在一起一样,这就是链式调用,又称链模式。
前端时间为移动游戏做一个网页活动需求(9宫格的刮奖),遇到一个很诡异的问题:Android端OK,就是在Ios设备上,点击非第一块区域,显示却是第一块区域被刮开咯,查看后端返回数据缺失OK的【前端采用backbone写法,遍历返回数据用的是underscore.js中的each】。经过一番查证,原来如此。 参考水木社区这里的叙述,知晓原来这个属于:IOS 8 Safari JIT bug 影响 jQuery 和 underscore,致使: $.each/.each,看到 .length 后,会把一个 ob
模块化开发是 JS 项目开发中的必备技能,它如同面向对象、设计模式一样,可以兼顾提升软件项目的可维护性和开发效率。
注:文章中有例子无法在微信里面展示,最好看原文。 以前写过一篇文章《“节流函数”提高性能》,里面讲到用函数“节流”来减少执行次数(不影响体验的情况下),其实实现的代码并没有问题,但是第二个方法的函数名有问题。前几天看到一篇文章,我的公众号里也分享了《一次发现underscore源码bug的经历以及对学术界拿来主义的思考》具体文章详见。 文中讲了大家对throttle和debounce存在误解,同时提到了《高程3》中实现节流方法存在一些问题,为了更好的理解这两个概念,搜了很多相关文章,详见文章底部。 thro
开篇扯淡 距离上一篇文章已经有好几个月,也不是没有时间记录点东西,主要是换了新的工作,在一家外资工作,目前的工作内容大多都是前端开发,新接触的东西因为时间原因,大多还不成体系,所以这么长时间什么都没记录下来,也正是因为新的工作内容,才有了今天这篇文章。 这篇文章是我自己的博客项目的前端重写,因为目前ASP.NET API和单页应用的流行,结合目前工作中用到的东西,我决定把我的博客项目的前端部分整个重写,(以前的就是一坨…) 步入正题 背景知识 RequireJS http://www.requirejs.o
当看到墨颀 CMS的菜单,变成一个工具栏的时候。变认为这一切有了意义。于是就继续看看这样一个CMS的边栏是怎么组成的。
如果我们想把某个东西转换成一个对象,我们需要传递具有这两个要求的东西:键和值。 满足这些要求的参数有两种类型:
先来说一下这个helloworld的功能: 在页面上有一个报道的按钮,点击弹出输入框,输入内容,确认,最后内容会加到页面上。页面图如下:
二分查找关键在于首先要保证要查找的元素是(有序的, 数组)!! 二分查找比平常的按照顺序的方式查找效率更高(不用对去全部的元素进行遍历), 二分查找是选取一个中间值一分为二, 对中间值跟要查找的元素比对来决定向左或者向右查找, 如果当前值小于查找元素, 则向右查找, 当前值大于或者等于查找元素, 则向左查找。 直到条件不满足 => 返回
npm 之于 Node.js ,就像 pip 之于 Python, gem 之于 Ruby, pear 之于 PHP 。
更新于 2016/08/23 资源 Open Source Society University 自学计算机科学的学习路径和资源。 免费的计算机编程类中文书籍 免费编程书籍 计算机科学论文 awesome 各种了不起的资源。 Python Share Python初学者书籍、视频、资料、社区推荐。 Python 资料汇总 码农周刊整理 500 Lines or Less 一些高质量的代码总数小于 500 行的小项目 前端 Github FE project Github 上值得关注的前端项目 n
领取专属 10元无门槛券
手把手带您无忧上云