关于javascript模块化

其实js模块化几年前就有了,但自己一直没有接触过,只是听说。这算一个很大的知识点吧,这两天打算认真学习一下。网上搜集了一些资料,首先阅读的是阮一峰大神的文章http://www.ruanyifeng.com/blog/2012/10/javascript_module.html

阅读的过程中,首先明白了最简单的模块化,两个函数声明就是两个模块了。接着是模块化的对象写法,这种写法的缺点是内部变量会暴露,导致被篡改,于是使用匿名函数的方法。

阅读到这里,对于匿名函数我其实是一知半解的,之前也是有所了解,但并不全面。

那么接下来我继续搜索关于立即调用函数的知识。

首先三个名词:函数表达式,函数声明,匿名函数

函数表达式就是有等号的,一般用var声明一个变量之后把一个匿名函数赋值给这个变量。

函数声明就是以function开头,紧接着是函数名和函数体如function funName(){}。

匿名函数就是没有函数名的函数表达式。

立即调用函数,首先他的作用顾名思义,开发者希望定义完之后不用再调用就可以执行。

函数声明无法立即调用。把函数声明转换为函数表达式就可以。有很多种方法,最简单的是用一对小括号将函数声明括起来,然后在最后面加上一对小括号就可以。(function fnName(){})();

其他的方法是在function前面加!,-,+,void,其余具体的不再展开了,其实我还是不太明白为什么外部无法访问内部变量,好像是因为作用域的关系,具体原理不是很清楚。

那么最简单的用立即调用函数创建的js模块就是如下

var module = function(){

var m1 = function(){};

var m2 = function(){};

return{

m1:m1,

m2:m2,

}

}();

放大模式:

var module = function(mod){

mod.m1 = function(){};

mod.m2 = function(){};

return mod;

}(module);

宽放大模式:

var module1 = ( function (mod){

//…

return mod;

})(window.module1 || {});

就是多了个变量能为空

 

HTML5本地存储:SessionStorage, LocalStorage, Cookie

很久没有写技术内容了,是时候继续积累和沉淀了。今天学习一下html5的本地存储。一共有三种,SessionStorage,LocalStorage和Cookie。

他们的异同

1.相同的是他们都是以键值对的形式出现,他们都是本地存储,不会发送到服务器。

2.第一点不同的是cookie每个键值对可以设置过期时间,localStorage是需要手动清除缓存才会消失,sessionStorage在浏览器关闭以后就消失了。第二点不同的是他们的存储空间,cookie一般浏览器允许最大4kb,每个浏览器允许的最多个数也不同,有20,30,40,50的,具体不了解。而另外两者允许大小为5M-10M。

Cookie的操作

1.设置cookie

function setCookie(key,val,expireTime){

var dateTime = new Date();

dateTime.setDate((new Date().getDate()+parseInt(expireTime)));

document.cookie = key+”=”+val+”;expire=”+dateTime.getDate();

}

2.获取cookie

function getCookie(key){

var valStart = document.cookie.indexOf(key+”=”);

if(valStart != -1){

valStart=valStart+key.length+1;

}

var valEnd = document.cookie.indexOf(“;”,valStart);

return document.cookie.substring(valStart,valEnd);

}

 

SessionStorage与Localstorage的操作

这两个的操作很简单了

localStorage.clear();
localStorage.setItem(‘key’, ‘value’);
localStorage.getItem(‘key’); // => ‘value’
localStorage.removeItem(‘key’);
SeccionStorage相同

这两天的面试感想

简历放出去的第一天一共接到6、7个电话,由于年后才离职,所以确定面试的只有2家。

第一家是X软,大公司,技术总监面试。自己技术薄弱,所以问了很多问题都没答上来,回去之后叫我抄一边jquery源码。想来自己之前的学习,动手的太少太少,总是好高骛远,觉得看一下就会了,又希望速成,有时候又觉得时间多,有时候又因为没压力,所以进步很少很少。现在抄jquery代码一天最多也只能抄1000行,感觉打字速度倒是提高不少。所以我想收获还收有的。

第二家是一家金融公司,公司刚要扩张,一个3年的前端面试的我,问题基本答上来,但再问深一点就不会了,不过算是通过了。面试下来最大的感触是,平时的积累还是有一点用的,有一个问题就是下午才看到的,然后晚上就问到了。

总结一下,感觉现在公司对于前端的要求好像还是需要有后端能力,至少会掉接口,会ajax,数据交互,我想这样是对的,但是无奈目前做的工作只是偏向于静态的更多。所以希望之后去的公司能够使自己在和后端交互方面的能力有所加强。

在洗澡的时候我想到一种学习的小方法,就是每天列出10个问题,然后一一仔细解决。在我阅读的时候带着一个问题去阅读,总会冒出更多的问题,使我无暇顾及,这一点目前还没有很好的解决方法,我认为本质的问题还是自己积累的不够吧。慢慢来吧,欲速则不达,努力不难,难的是持续的努力。道理谁都懂,希望这次真的能有所成长。

转发一篇关于前后端分工的文章

摘要: 文章背景,来自于群内周五晚上的一次头脑风暴式的思维碰撞交流活动。

我们的流程是这样的,后台提供数据接口,或接口文档。
然后我们前台进行razor模板的数据逻辑嵌套或html,css,js整个流程的开发。
缺点是:工作量是满大的,优点是,所有前端view层的东西都是可控的。
坑是比较多的,
比如数据出现问题时,没有一个经验丰富的前端或后端进行联调,
有问题短时间内是解决不了的。

 

一般跟后台合作分为这几种模式:
1. 只产出html页面,然后交给后端来处理数据。
这种的好处是工作量比较少,公司没有专门的前端岗位时可以实行这种办法。
但这种的缺点也是显而易见的,后端人员工作量偏大,如果有ajax或数据添加后出现样式问题,
进行联调,花费更长的时间。
2. 产出静态的php,jsp页面,然后交给后端来处理数据。
这种的好处是因为提交的是php,jsp页面,如果数据添加之后界面出现问题,可以很快的去调整,
方便各种联调,但是最根本的问题是后端的工作量还是稍大,并没有完全的减轻后端人员的压力。
打包发布还是需要依赖后端,而且在开发中依赖后端的情形偏重。
3. 产出动态有数据的php,jsp页面,前端与后端的打包发布完全独立。
这种的好处是前端层的表现,数据完全由前端把控,
有什么问题可以由前端独立解决,并单独打包发布。
缺点是由于前端的工作量加大,对前端的技术存储要求偏高,人力招聘有一定的难度。

由于这种界限的划分有时候很难确定,这时候群内朋友给出的建议是:
1. 公司上级确定,这个活该谁来干
2. 看公司实际情况,如果FE人少,那么就交给RD
3. 根据不同的语言来区分对待。

还有其它人的合作方式是:
1、提出需求,讲明白前端要的接口效果。看后台人员是否能满足这样需求,如果有现成的接口,直接调用就是。如果没有,那么就跟后台人员协商是否可以再次开发。评估工作量和完成日期。
2,有时候后端设计出来的接口不一定能满足所有的需求,也许在某个方法中有个雷,直到自己去调用才知道。就比如批量插入数据,前台可能会循环调用保存,而不是后台批量插入。前台依次来调用是可以完成操作,但是效率是个问题,需要很好的去权衡。

在与后端合作当中,后端没有提供数据接口,如何处理?有以下几种办法:
1. 自己制作模拟数据
这种办法的缺点时,有时候可能会造成api变更时没有及时更新,好处也是显而易见,能够快速的完成前端任务。
2. 使用http://mockjs.com/,模拟数据生成器

其它有坑的地方:
数据的换算时的谨防精度丢失,接口的返回数据不准确,还有配置文件的频繁修改造成的数据不对等。
我们是前端自己模拟所有的数据接口,后端配合我们做接口,反过来了。
前端只需提供一些配置给后端,比如数据请求地址等等,后端配上就ok

接口通信,文档配合交流
http://www.cnblogs.com/hustskyking/p/interface-in-development.html
前后端分工 还不错。

根据上面的探讨得出以下的结论:
1. 前端了解一门后端语言有助于工作效率的提高,是将来的一个大趋势。
2. 前端的逻辑数据完全可以完全分离,也就是可以与后端不同的语言种类。

 

原文地址:http://www.cnblogs.com/jikey/p/4118088.html

毛姆读书随笔–摘记

艺术的价值:如果它只能给人以享受,那么不管这种享受有多少精神价值,也没有多大意义……如果它是一种安慰,那就可以了;世界不可避免地充满了邪恶,若能有一方净土可供人们隐退一阵,那当然很好;但不是为了逃避邪恶,而是为了积蓄力量去面对邪恶。艺术必须教导人们谦逊,坚韧,聪慧和宽容。艺术的价值不是美,而是正确的行为。–《“真、善、美”之我见》

毛姆对于艺术价值的阐述,使我更加清晰的认识到艺术的作用。引申开来,真正美的事物应该是让我们得到一种宽慰的享受,帮助我们更好的生活吧。

深拷贝与浅拷贝

浅拷贝:拷贝的对象改变时,被拷贝的对象也会随之改变。

一.以下几种方法可以实现改变拷贝对象,而被拷贝对象不变。

1.使用slice函数

var arrA = [“abc”,”def”.”ghi”];

var arrB =arrA.slice(0);//从0开始到结束

arrB[1] = “xyz”;

console.log(arrA);//abc def ghi

console.log(arrB);//abc xyz ghi

2.使用concat方法

var arrA = [“abc”,”def”.”ghi”];

var arrB = arrA.concat();

二.深拷贝

把对象的属性遍历赋给新对象

var deepCopy = function(source){

var newObj = {};

for(var key in source){

newObj[key] = typeof source[key] === ‘object’?deepCopy(source):source[key];

}

return newObj;

}

 

一篇文章

梁启超的一段自述中讲到:他人生信仰的是趣味主义。他说,他所做的事常常失败,然而总是一面失败一面做,因为不仅在成功中感到趣味,在失败里头也能感觉趣味。相比现在的成功学与社会风气来说,这真的是一种难得的心境,我辈自当学习。反思自己的踟蹰不前,还不是害怕失败。好像一失败,天就要塌下来了一样。所以,要相信失败也是有趣味的,那样生命才不会干涸。

我看过的唯一一本书

高中的时候,买过很多的杂志,包括有名的《读者》,《青年文摘》,甚至《故事会》,但要说算得上读过的书籍,好像真的只有周国平的那本散文集。我记得三年级的时候,我就学会了多愁善感,无病呻吟。在现在很多人看来都是一种不好的姿态,尽管我还没有完全改掉他们说的这个毛病。我在那时候买的第一本书叫做《品味生活》,老师说,现在看这个太早了,可我觉得看起来心里有种东西在激荡,无论是什么。

说回那本散文集。我大概反复看了好几遍,当时做了好多记号,觉得很多话都很经典。可是自己能实践的做到的却连皮毛都不到。反而导致想的太多,踟蹰不前。还导致产生了很多近乎绝望的想法。或许这本书对于我,只是一本普通的书,就像遇到一个普通的人,以为相见恨晚,其实到最后还是归于平淡。

好像很久没有写东西了,刚开始的感觉很好,写到后来好像写不出什么东西了,硬挤,那种感觉反而不好了,就写这么多吧,接下来多看书,多思考。学而不思则罔,我现在是思而不学则殆了。

这是我的第一篇文章

很早之前就搭了wordpress,一直想写日志,却迟迟没有动笔。我想记录我工作上学习的东西,生活中经历的事情,比如看过的书,电影,做过的事,心情等等。希望能坚持下去。