那个据说是前手淘的前端开发负责人winter在极客时间上面开的课。我不认识他,在他的试读当中提到的前端发展快,各种工具插件层出不穷,而大多数前端都是自学的,没有成体系 所以就造成了很多人学不动的现象,这就是前端基础差的缘故。而这个基础不单单是指web前端(js+html+css),还包括程序员通用编程基础。 作为一个嵌入式的程序员我对这话深以为然。所以决定买下该课程。68元。真尼玛贵。是真的贵。想起罗振宇这个傻屌弄出的这些知识付费。一个商人,一个做了商人还要牌面的无耻的商人。恶心。反正只要是别人赚钱我不赚钱我都不舒服。哈哈
由于这位大哥还没有更新完全,全一共40节课。而我处于对极客时间课程的不信任,很有可能不会学完。
前面在吹牛逼,说自己的简历。确实比我这种码农牛逼很多。不过依旧是在吹牛逼。又是盛大,又是阿里巴巴,刚开始还在微软。跳过不看。
第一句有意义的话:散点自学 + 基础不牢。造成这样的原因,就是对前端的知识点没有成体系。这个其实很学习任何东西都是一样的。学习就是要总结,就是要在脑海中有自己的一个思维导图。学过的知识,毕竟不是每天都是在用,总是会忘记的。所以这个时候就需要总结,形成自己的字典,等到需要用的时候就去翻看自己脑海中的这个字典,很容易就能找到解决问题的办法。
第二个有意义的话:课程的分为的四大模块
反正第一章是没屌用,正确的废话
没看他的课程之前,我的知识体系是构建在《javascr高级程序设计》这本书上面的。而这本书其实和在学校中学习C语言教程目录目是一样的。
类似的,前端的知识体系也是一样。
这一节课,他提出了一个我第一次见到的,单单就是JavaScript而言,它的知识体系是
对于计算机语言来说,用规定的文法,去表达特定语义,最终操作运行时的一个过程。
任何JavaScript的知识点都逃脱不了这个范围之外。
细分之后:
其他知识点:
这章有点意思。前端最难的不是学习语言本身,而是如何去工程化,如果更好的组织代码、打包工程,如何进行下一步的优化。尤其是团队合作方面,这个我的经验基本为零。
遍历一遍前端知识架构。
该课程的正式目录:
用一定的词法和语法,表达一定语义,从而操作运行时。
HTML中标签可以分类如下
前四种是HTMl部分课程的重点。
CSS部分分为布局、绘制、交互类
这一节课说的是语义话标签。语义话标签我这段时间一直在使用,但是也就是header、aside、footer、main,section基本就这四个,仅仅是为了结构好看一些而已。就我要处理的环境而言,其实是足够的。
语义话带来的好处:
winter对于语义话的使用有一个很好的总结:用对比不用好,不用比用错好。
sectionz例子:
<body>
<header>
<nav>
……
</nav>
</header>
<aside>
<nav>
……
</nav>
</aside>
<section>
<h1>HTML 语义 </h1>
<p>balah balah balah balah</p>
<section>
<h1> 弱语义 </h1>
<p>balah balah</p>
</section>
<section>
<h1> 结构性元素 </h1>
<p>balah balah</p>
</section>
......
</section>
<section>……</section>
<section>……</section>
<footer>
<address>……</address>
</footer>
</body>
值得庆幸的是,和我用的时候基本是一样的。
总结:语义话标签如果用对了,确实对开发者更加的友好,可读性更加的强。对于自己后期要修改需求有很大的帮助。可惜的是,我用的语义化标签也就到此为止了。这些用得也还算是熟悉的。
这位大哥用wiki的网页来进行语义话标签的使用说明。这样的方式其实是很好的。就是我看不下去了。因为这些语义话标签或许见过,但是基本从来是没有用过的。如下表:
服气。我觉得如果真的在项目中使用这些语义话标签的话,只会加重我前期的心理负担。而且觉得很多地方也并不实用。或许使用这些语义话标签只会会好很多,是不是由于我不想走出自己的舒适区呢?哈哈
在富文本这类场景时,我们应该尽量地语义话;写软件界面时,保持整体上的结构化即可。这位是一个网友说的,和我想的不谋而合。
有意思的知识点:
**总结:**结合自己而言,对于这些细分的语义话标签,有了解的必要,没有必须融入到工作项目中的必要。
winter通过如下几点进行了解说:
运行时类型是代码实际执行过程中我们用到的类型。所有的类型数据都会属于7个类型之一。从变量、参数、返回值到表达式中间结果,任何javascript代码运行过程中产生的数据,都具有运行时类型。
1. undefined 2. Null 3. Boolean 4. String 5. Number 6. Symbol 7. Object
undefined
这个很有意思,undefined这个类型不是关键字。就是说可以var undefined = '';但是你打印出来的依旧是undefined.说这个设计是js最失败的设计之一。
用他的说法来说,undefined的类型只有一个值就是undefined,语义是未未定义。
Null
Null类型也只有一个值,就是null,它的语义表示空值。可以常用来占位.
var xxx = null;
Boolean
Boolean类型有两个值,true和false,且都是关键字。
String
没看懂其实。字符数是啥?UTF16编码又是啥?charAt、charcodeAt、length等方法针对的都是UTF16编码。啥玩意?我这个计算机科学与技术的本科知识都对给老师来么?
值得注意的:字符串的值是不可以改变的,和数组是不一样的
var text = '我要回家过年';
text[1]; //要
text[1] = 美女; //美女
console.log(text[1]) //要
就是说给字符串赋值会临时创建一个值,随后被销毁。
Number
值得一提就是0.1+0.2 不等于0.3的问题。是由于浮点数的精度造成的。这个在书里面说得很清楚了,没啥好记的。
Symbol
var o = new Object
o[Symbol.iterator] = function() {
var v = 0
return {
next: function() {
return { value: v++, done: v > 10 }
}
}
};
for(var v of o)
console.log(v); // 0 1 2 3 ... 9
确实基础有点差,不知道这个玩意的使用场景是什么东西。书中说的是表示独一无二的值。
Object
每天都用的东西。他还能说出花来?果然没成花,68元好像不值啊。
和犀牛书说的一样,对象定义是“属性的集合”。属性分为数据属性和访问器属性,二者都是key-value结果。key可以是字符串或者symbol类型。
对象的数据属性
var person = {
name:'wyc',
age:25
}
console.log(Object.getOwnPropertyDescript(person,'name'));
执行结果:
configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性,默认为true
enumerable:表示能否通过for-in循环返回属性
writable:表示能否修改属性的值
value:包含该属性的数据值。默认为undefined
对象的访问器属性
访问器属性:这个属性不包含数据值,包含的是一对get和set方法,在读写访问器属性时,就是通过这两个方法来进行操作处理的。
访问器属性包含的四个特性:
configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性,默认为false
enumerable:表示能否通过for-in循环返回属性,默认为false
Get:在读取属性时调用的函数,默认值为undefined
Set:在写入属性时调用的函数,默认值为undefined
这里要注意下,访问器属性不能直接定义,要通过Object.defineProperty()这个方法来定义。
var person = {
_age:18
}
类型转换
略
先上结论,javascript是面向对象的语言。之前看《高级程序设计》的时候,还有犀牛书的时候,以及在工作中,脑海中觉得JavaScript不是面向对象的语言,而是基于对象的。至于为什么,从来没有深入了解过。这节课,winter这个大哥就说的很清楚了。
面对对象
自然语言中,尤其是中国的自然语言中,对象指的是晚上给我一进一出的,胸前两团肉,下面和我长得不一样的一个生物。winter说Object(对象)在英文中,是一切事物的总称,和面向对象编程的抽象思维有互通之处。
要了解对象,就要了解一个叫类的玩意。类就是一些属性的集合。有四条腿,一个尾巴。这个可以是一条哈皮狗,也可以是一条哈士奇。而对象指的就是名叫汤圆的那条狗。
java、c++、pyhone等的面对对象是要基于对象的类的,而js是基于对象的原型来的。所以说js也是面向对象编程的没毛病。
所以对于对象的定义就有了如下三点:
var a = { b : 1};
var c = { b : 1};
a == c //false
修改对象的数据属性的默认值。我通常之用value就够了
var o = { a: 1 };
Object.defineProperty(o, "b",
{
value: 2,
writable: false,
enumerable: false,
configurable: true
});
//a 和 b 都是数据属性,但特征值变化了
Object.getOwnPropertyDescriptor(o,"a"); // {value: 1, writable: true, enumerable: true, configurable: true}
Object.getOwnPropertyDescriptor(o,"b"); // {value: 2, writable: false, enumerable: false, configurable: true}
o.b = 3;
console.log(o.b); // 2
vue的双向绑定的原理就是利用javascript对象的访问属性中set和get的回调函数实现的。
恕我直言,这章我还没有看懂。。。你说死不死。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。