随笔分类 -  JavaScript

摘要:1、需求 在Sketch的Artboard中插入网页截图: 1.1、输入网址,自动截图到Artboard中,并居中显示; 1.2、可截取网页局部图片 2、技术选型 技术的选型主要是针对截图功能的选型,插件技术选用sketch-webview-kit。 截图技术主要有phantomjs、puppete 阅读全文
posted @ 2019-04-08 09:40 jingwhale 阅读(944) 评论(2) 推荐(0) 编辑
摘要:一台服务器部署多个应用。可部署前端工程、node服务、数据库等。 一、服务器选择合适的服务器,购买即可。服务器商1、阿里云2、腾讯云3、百度云 二、服务器管理面板-宝塔宝塔面板是一款服务器管理软件,支持windows和linux系统,可以通过Web端轻松管理服务器,提升运维效率。例如:创建管理网站、 阅读全文
posted @ 2019-04-05 18:20 jingwhale 阅读(4028) 评论(2) 推荐(1) 编辑
摘要:相信大家都对Sketch有一定的了解和认识。除了基础的矢量设计功能以外,插件更是让Sketch保持强大的独门秘籍。Sketch开放了第三方插件接口,设计师可以在几百种的插件中轻松找到适合自己工作方式的插件,并且他们都非常容易获得和安装。这里主要介绍使用Javascript API for Sketc 阅读全文
posted @ 2019-03-12 23:33 jingwhale 阅读(2957) 评论(0) 推荐(0) 编辑
摘要:前后分离的总结 我们遇到了什么问题? 1.前端无法调试后端未完成的 API:如果后端同学还没有完成 API 开发,那么前端同学就不能对这个 API 进行开发。之前我们都是在代码里直接通过给变量赋假数据,又或者是在后端 Controller 里直接 return JSON 的方式来进行调试的。这样的方 阅读全文
posted @ 2016-11-11 14:52 jingwhale 阅读(5144) 评论(10) 推荐(2) 编辑
摘要:模板的工作原理可以简单地分成两个步骤:模板解析(翻译)和数据渲染。这两个步骤可分别部署在前端或后端来执行。如果放在后端执行,则是像Smarty,FreeMarker这样的后端模板引擎,而如果放在前端来执行,则是我们要探讨的前端模板。 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用 阅读全文
posted @ 2016-08-26 21:32 jingwhale 阅读(19052) 评论(4) 推荐(4) 编辑
摘要:一.设备像素比(device pixel ratio ) 视觉稿 在前端开发之前,我们会有一个psd文件,称之为视觉稿。对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 首先,选取一款手机的屏幕宽高作为基准(以前是iphone4的320×480,现在更多的是iphone6 阅读全文
posted @ 2016-08-05 15:34 jingwhale 阅读(9088) 评论(2) 推荐(3) 编辑
摘要:AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVVM、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。Angular实现了双向绑定机制。所谓的双向绑定,无非是从界面的操作能实时反映到数据,数据的变更能实时展现到界面。下面的原理想法实际上很基础,可以被认为是3步走计划: 我们需要一个UI元素和属性相互绑定的方法 我们需要监视属性和UI元素的变化 我们需要让所有绑定的对象和元素都能感知到变化 还是有很多方法能够实现上面的想法,有一个简单有效的方法就是使用PubSub模式。 这个思路很简单:我们使用数据特性来为HTML代码进行绑定,所有被绑定在一起的JavaScript对象和DOM元素都会订阅一个PubSub对象。只要JavaScript对象或者一个HTML输入元素监听到数据的变化时,就会触发绑定到PubSub对象上的事件,从而其他绑定的对象和元素都会做出相应的变化。 阅读全文
posted @ 2016-01-09 22:16 jingwhale 阅读(46798) 评论(0) 推荐(3) 编辑
摘要:移动客户端的开发类型(站在前端立场上来说),主要是三种: Native App(原生APP),也就是完全使用移动设备系统语言写的客户端,iPhone iPad就是纯Object-C,安卓就是纯JAVA, 是性能最棒的开发方式,但灵活性不好。 Web App, 就是在移动浏览器里打开的,纯HTML+CSS+JS,说白了就是个网页,只不过非常的富应用,比如手机浏览器访问的GMAIL。就是在浏览器里打开的页面。IOS支持可以在桌面创建访问的快捷方式,但是说到底还是打开Safari跑。而且对设备硬件的接口什么的挺薄弱。 Hybrid App.[HTML5 in mobile devices] 。实际上是使用原生写了一个容器,然后使用HTML+CSS+JS来实现用户界面和交互。Web App的短处便可以克服(因为自己写的容器可以辅助暴露偏底层的接口,比如本地存储或者麦克风控制之类),同时比起纯原生的java或者object-c开发灵活性要高(更新可以更快更迅速,也不依赖于市场,因为说白了,就是自己下载更新网页资源。)实际上这种方式已经不限于移动端。豌豆荚其实是个pc端的hybrid app 阅读全文
posted @ 2016-01-02 21:00 jingwhale 阅读(5097) 评论(0) 推荐(0) 编辑
摘要:在很多情况下,我们需要页面的全屏滚动,尤其是移动端。今天简要的介绍一下全屏滚动的知识。 一.全屏滚动的原理 1.js动态获取屏幕的高度。 获取屏幕的高度,设置每一屏幕的高度。 2.监听mousewheel事件。 监听mousewheel事件,并判断滚轮的方向,向上或向下滚动一屏。 总结: 可以根据需求使用fullpages实现全屏滚动(上下,左右),也可以使用jquery-mousewheel定制不同高度的全屏滚动。 阅读全文
posted @ 2015-12-27 12:10 jingwhale 阅读(4691) 评论(3) 推荐(1) 编辑
摘要:1、栈(stack)和堆(heap) stack为自动分配的内存空间,它由系统自动释放;而heap则是动态分配的内存,大小不定也不会自动释放。 2、基本类型和引用类型 (1)基本类型:存放在栈内存中的简单数据段,数据大小确定,内存空间大小可以分配。   5种基本数据类型有Undefined、Null、Boolean、Number 和 String,它们是直接按值存放的,所以可以直接访问。 (2)引用类型:存放在堆内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置。每个空间大小不一样,要根据情况开进行特定的分配。   当我们需要访问引用类型(如对象,数组,函数等)的值时,首先从栈中获得该对象的地址指针,然后再从堆内存中取得所需的数据。 3、传值与传址   前面之所以要说明什么是内存中的堆、栈以及变量类型,实际上是为了更好的理解什么是“浅拷贝”和“深拷贝”。   基本类型与引用类型最大的区别实际就是传值与传址的区别。测试用例: 阅读全文
posted @ 2015-10-16 11:19 jingwhale 阅读(4212) 评论(0) 推荐(2) 编辑
摘要:HTML5 canvas标签用于绘制图像(通过脚本,通常是 JavaScript)。 不过,canvas元素本身并没有绘制能力(它仅仅是图形的容器) - 您必须使用脚本来完成实际的绘图任务。 getContext() 方法可返回一个对象,该对象提供了用于在画布上绘图的方法和属性。 本手册提供完整的 getContext("2d") 对象属性和方法,可用于在画布上绘制文本、线条、矩形、圆形等等。 浏览器支持 Internet Explorer 9、Firefox、Opera、Chrome 以及 Safari 支持 canvas 及其属性和方法。 阅读全文
posted @ 2015-10-06 22:46 jingwhale 阅读(5117) 评论(2) 推荐(6) 编辑
摘要:ECMAScript 有两种开发模式:1.函数式(过程化),2.面向对象(OOP)。面向对象的语言有一个标志,那就是类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。但是,ECMAScript 没有类的概念,因此它的对象也与基于类的语言中的对象有所不同。一.创建对象 创建一个对象,然后给这个对象新建属性和方法。构造函数的方法构造函数的方法有一些规范: 1)函数名和实例化构造名相同且大写,(PS:非强制,但这么写有助于区分构造函数和 普通函数); 2)通过构造函数创建对象,必须使用new 运算符。三.原型 我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个对象,它的用途是包含可以由特定类型的所有实例共享的属性和方法。逻辑上可以这么理解:prototype 通过调用构造函数而创建的那个对象的原型对象。使用原型的好处可以让所有对象实例共享它所包含的属性和方法。也就是说,不必在构造函数中定义对象信息,而是可以直接将这些信息添加到原型中。四.继承 继承是面向对象中一个比较核心的概念。其他正统面向对象语言都会用两种方式实现继承:一个是接口实现,一个是继承 阅读全文
posted @ 2015-07-26 20:42 jingwhale 阅读(51076) 评论(2) 推荐(3) 编辑
摘要:什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。 目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Unix时间戳最多可以使用到格林威治时间2038年01月19日03时14分07秒(二进制:01111111 11111111 11111111 11111111)。其后一秒,二进制数字会变为10000000 00000000 00000000 00000000,发生溢出错误,造成系统将时间误解为1901年12月13日20时45分52秒。这很可能会引起软件故障,甚至是系统瘫痪。使用64位二进制数字表示时间的系统(最多可以使用到格林威治时间292,277,026,596年12月04日15时30分08秒)则基本不会遇到这类溢出问题。 阅读全文
posted @ 2015-07-24 22:11 jingwhale 阅读(377572) 评论(9) 推荐(11) 编辑
摘要:js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。 同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。JavaScript出于安全方面的考虑,同源策略不允许跨域调用其他页面的对象。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。javascript跨域简单分为以下情况: 1、基于同一父域的子域之间,如:a.c.com和b.c.com 2、基于不同的父域之间,如:www.a.com和www.b.com 3、端口的不同,如:www.a.com:8080和www.a.com:8088 4、协议不同,如:http://www.a.com和https://www.a.com 对于端口和协议的不同,需要通过后台proxy来解决,具体方式如下: a、在 阅读全文
posted @ 2015-07-22 23:39 jingwhale 阅读(3675) 评论(4) 推荐(7) 编辑
摘要:事件冒泡和事件捕获分别由微软和网景公司提出,这两个概念是为了解决页面中事件流(事件发生顺序)的问题。 1.事件冒泡 微软提出了名为事件冒泡的事件流。事件冒泡可以形象地比喻为把一颗石头投入水中,泡泡会一直从水底冒出水面。也就是说,事件会从最内层的元素开始发生,一直向上传播,直到document对象。 因此上面的例子在事件冒泡的概念下发生click事件的顺序应该是p -> div -> body -> html -> document 2.事件捕获 网景提出另一种事件流名为事件捕获与事件冒泡相反,事件会从最外层开始发生,直到最具体的元素。 上面的例子在事件捕获的概念下发生click事件的顺序应该是document -> html -> body -> div -> p 3.W3C事件阶段(event phase): 当一个DOM事件被触发的时候,他并不是只在它的起源对象上触发一次,而是会经历三个不同的阶段。简而言之:事件一开始从文档的根节点流向目标对象(捕获阶段),然后在目标对向上被触发(目标阶段),之后再回溯到文档的根节点(冒泡阶段)如图所示(图 阅读全文
posted @ 2015-07-18 14:43 jingwhale 阅读(6791) 评论(1) 推荐(7) 编辑
摘要:物体运动原理:通过改变物体的位置,而发生移动变化。 方法: 1.运动的物体使用绝对定位 2.通过改变定位物体的属性(left、right、top、bottom)值来使物体移动。例如向右或左移动可以使用offsetLeft(offsetRight)来控制左右移动。 步骤: 1、开始运动前,先清除已有定时器 (因为:是连续点击按钮,物体会运动越来越快,造成运动混乱) 2、开启定时器,计算速度 3、把运动和停止隔开(if/else),判断停止条件,执行运动 阅读全文
posted @ 2015-07-05 14:36 jingwhale 阅读(3188) 评论(0) 推荐(2) 编辑
摘要:正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 阅读全文
posted @ 2015-07-02 22:43 jingwhale 阅读(14142) 评论(0) 推荐(0) 编辑
摘要:call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。 说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。 apply方法: 语法:apply([thisObj[,argArray]]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。 说明: 如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。 如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。 阅读全文
posted @ 2015-06-27 23:40 jingwhale 阅读(11318) 评论(6) 推荐(8) 编辑
摘要:闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。一.什么是闭包。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。二.闭包的应用。模块化代码;循环闭包;封装;关于 this 对象。三.闭包的原理。闭包无处不在,弄懂它很重。 阅读全文
posted @ 2015-06-14 11:11 jingwhale 阅读(10356) 评论(5) 推荐(3) 编辑