【读书笔记】JavaScript代码的组织

《编写高质量代码——Web前端开发修炼之道》

1、页面上的许多JavaScript需要有效的组织起来,才不会显得杂乱无章。
根据职能可以划分为两种,框架部分和应用部分。
定义一个function init(){},将应用部分代码包含进来:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用命名空间</title>
</head>
<body>
    <div>XXXXXXXXXXX</div>

    <script type="text/javascript">
        var GLOBAL = {};
        GLOBAL.namespace = function(str){

            var arr=str.split("."),
            o=GLOBAL;
            console.log(arr);
            for(i=(arr[0]==="GLOBAL")?1:0;i<arr.length;i++){

                o[arr[i]]=o[arr[i]]||{};
                o=o[arr[i]];

            }
        };
        function init(){
            (function(){
               var a = 123,b = "hello world";
               GLOBAL.namespace("A.CAT.CAT1");
               GLOBAL.namespace("A.CAT.DOG3");
            })();

            (function(){
                console.log(GLOBAL);

            })();
        }
    </script>
</body>
</html>

2、window.onload 的优缺点
优点:即使是script程序写在dom节点之前也没有问题。
缺点:网页内元素全部加载完毕才会触发onload事件,如果加载时间很长,script程序要等待很久才能够执行!

我们可以使用js框架的DOMReady,只监测dom节点是否生成,不关心节点的内容。
对于前面的init函数:
jQuery中采用$(document).ready(init);
YUI中采用YAHOO.util.Event.onDOMReady(init);
也可以用原生js:
直接init(); //= = 好吧

3、最后一个问题,就是本书中所提到的,网站的头部和尾部通常会做成单独的文件,用服务器端语言include到网页中。
头部:存放框架部分
尾部:存放init()的调用,要判断是否定义了init函数
主题:存放应用部门,再用funtion init()将其包含

PS:网站中在服务器端而不是前端包含头部尾部
这个问题参考segmentfault中的回答:
https://segmentfault.com/q/1010000003960406

帖子中有个前后端分离的概念很重要,也是我一直想知道的:

前后端分离是指:后端(Server)负责 Model 层,提供数据,而前端(Browser)负责 Controller 和 View 层,负责将数据渲染。

也就是说:所谓的前后端分离,分离的是数据,前端只是有一个骨架,浏览器加载页面之后,脚本会向服务器拉取数据。一个较常见的例子便是SPA(Single Page Application,单页应用)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值