Skip to content

10月4号文档

dawei edited this page Oct 4, 2016 · 4 revisions

sea.js总结答复


doc文档疑问

我把我所了解的说一下:

  1. sea.js是JS模块,因为CSS模块和Template 可以被转化(CSS我知道,可以定义属性,再设置style)Template是什么:? template描述的不准确,有可能是某人写的模板文件,或者是html代码文件,或者是用js写的html代码的字符串形式。
  2. CMD和AMD只是模块开发的一些标准规范。seaJS和RequireJS 都是模块化开发的框架,seajs是遵循cmd规范,requirejs是遵循amd 规范。关于cmd和amd可以点击这个链接看看
  3. 使用遵循这些规范的框架后,可以使用它们提供的接口来调用各个模块。
  4. amd和cmd这两个规范只是requirejs和seajs在推广的时候产生的,并不是什么公司推出来的。 请看理解AMD ,CMD,CommonJS规范
  5. 模块是通过define()方法包装的,然后内部痛过require()方法引入需要的依赖文件(模块)。(也可以引入.css文件哦~) 模块最好是面向对象开发的,这样最后可以方便的通过 exports.doSomething 或 module.exports 把模块的接口给暴露出来。如果你是写的是jq插件的话就不需要这个功能了,因为你的接口是写在jQuery的对象里的。如果你不需要提供接口的话也可以不使用这两个属性哦! 什么叫做依赖文件。? 什么叫做面向对象开发? 依赖文件比如说:我写了三个js文件,a文件需要用到b文件的某些外抛方法,那么a要引用b才能使用里面的方法。 c文件同样要使用b文件,那个就说b文件就是a和c的依赖文件。 这里说的面相对象开发,是说你在写a文件时,在里面放一些私有的参数和方法,只有a文件的外抛(公用)方法才能使用到 a里的私有参数和方法,外面的使用者只能通过外抛方法更改私有数据,外面的使用者不能独自更改私有的数据。
  6. Sea.js 增加的 require 语法关键字,就如 CSS 文件中的 @import 一样,给我们的源码赋予了依赖引入功能。这句话怎么理解? css里的@import这个属性可以用来引用其他的css文件。其实和sea.js的作用差不多的 详情请看Css里的@import用法
  7. 通过 exports 暴露接口。这意味着不需要命名空间了,更不需要全局变量。这是一种彻底的命名冲突解决方案。 通过 require 引入依赖。这可以让依赖内置,开发者只需关心当前模块的依赖,其他事情 Sea.js 都会自动处理好。对模块开发者来说,这是一种很好的 关注度分离,能让程序员更多地享受编码的乐趣。 这两句话怎么理解。解放命名空间,如何准确的引用,引入依赖如何保证不重复引用
  8. 解答一下第7条关于保证不重复引用问题,sea可以做到,咱们用到哪个模块可以放心大胆的引用就好了。 关于命名空间的问题是这样的:如果当一个人在写代码的时候,我可能会在全局作用域里写入多个变量,这时由于是我一个人在写代码,我对这些代码很熟悉,这时的问题是很少发生的。 那么现在变成一个团队甚至一个公司的人都在写代码,那么我们每一个人都往全局作用域里添加变量,这样会造成全局作用域里的变量过多,过乱的问题。 所以现在规定,最好我们每一个人所定义的变量都放在局部作用于里,不要忘全局作用域里放变量,这样会造成其他人在写代码的困扰。 通俗的说:我和你合作开发一个程序,我往全局作用域里添加一个变量a,这时你在写代码的时候也往全局作用域里写了个a变量,这时你的a变量就覆盖了我的a变量里的值。 当我在使用a的时候,这里的值就不是我原先定义的那个值了。所以,咱们的自个定义变量的时候,最好在各自的命名空间里放。这个命名空间就是解决了咱们各自定义的变量放在哪里的问题。 就是说,咱们定义变量的时候,一定不要污染全局作用域,这样会造成其他人写代码的一些问题。

先写这么多。不会的可以继续问我。咱们互相讨论。

Clone this wiki locally