先了解一下JS的历史:Javascript诞生记 。基本的语法,从官方文档开始:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
一些知识点
原义字符
等价字符引用
<
<
>
>
"
"
‘
'
&
&
1 2 3 4 <p > HTML 中用 <p > 来定义段落元素。</p > <p > HTML 中用 < p> 来定义段落元素</p >
HTML头 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <!DOCTYPE html > <html lang ="zh-CN" > <head > <meta charset ="utf-8" /> <title > 我的测试页面</title > <link rel ="icon" href ="favicon.ico" type ="image/x-icon" /> <link rel ="stylesheet" href ="my-css-file.css" /> <script src ="my-js-file.js" defer > </script > </head > <body > <p > 这是我的页面</p > </body > </html >
title:表示页面标题
meta:元数据
link:自定义图标
script:引入需要加载的js文件
常见标签 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 <h1 > 标题元素标签,数字表示不同大小</h1 > <h2 > </h2 > <h3 > </h3 > <h4 > </h4 > <h5 > </h5 > <h6 > </h6 > <ul > <li > 1</li > <li > 2</li > <li > 3</li > </ul > <p > 我创建了一个指向 <a href ="https://www.mozilla.org/zh-CN/" > Mozilla 主页</a > 的链接。 </p > <p > 咖啡因的化学方程式是 C<sub > 8</sub > H<sub > 10</sub > N<sub > 4</sub > O<sub > 2</sub > 。 </p > <p > 如果 x<sup > 2</sup > 的值为 9,那么 x 的值必为 3 或 -3。</p > <div > </div > <br /> <hr /> <img src ="images/dinosaur.jpg" alt ="一只恐龙头部和躯干的骨架,它有一个巨大的头,长着锋利的牙齿。" width ="400" height ="341" title ="A T-Rex on display in the Manchester University Museum" > <video controls > <source src ="rabbit320.mp4" type ="video/mp4" > <source src ="rabbit320.webm" type ="video/webm" > <p > 你的浏览器不支持 HTML5 视频。可点击<a href ="rabbit320.mp4" > 此链接</a > 观看</p > </video > <iframe src ="https://developer.mozilla.org/zh-CN/docs/Glossary" width ="100%" height ="500" frameborder ="0" allowfullscreen sandbox > <p > <a href ="https://developer.mozilla.org/zh-CN/docs/Glossary" > Fallback link for browsers that don't support iframes </a > </p > </iframe > <picture > <source type ="image/svg+xml" srcset ="pyramid.svg" /> <source type ="image/webp" srcset ="pyramid.webp" /> <img src ="pyramid.png" alt ="regular pyramid built from four equilateral triangles" /> </picture > <table > <tr > <td > </td > <td > Knocky</td > <td > Flor</td > <td > Ella</td > <td > Juan</td > </tr > <tr > <td > Breed</td > <td > Jack Russell</td > <td > Poodle</td > <td > Streetdog</td > <td > Cocker Spaniel</td > </tr > <tr > <td > Age</td > <td > 16</td > <td > 9</td > <td > 10</td > <td > 5</td > </tr > <tr > <td > Owner</td > <td > Mother-in-law</td > <td > Me</td > <td > Me</td > <td > Sister-in-law</td > </tr > <tr > <td > Eating Habits</td > <td > Eats everyone's leftovers</td > <td > Nibbles at food</td > <td > Hearty eater</td > <td > Will eat till he explodes</td > </tr > </table >
HTML文档的组成部分
页眉: 是简介形式的内容。如果它是 的子元素,那么就是网站的全局页眉。如果它是 或
导航栏: 包含页面主导航功能。其中不应包含二级链接等内容
主内容: 存放每个页面独有的内容。每个页面上只能用一次 ,且直接位于 中。最好不要把它嵌套进其他元素
侧边栏: 包含一些间接信息(术语条目、作者简介、相关链接,等等)
页脚:
CSS CSS能定义网页中特定元素样式的一组规则
使用CSS的方式
改变元素的默认行为 1 2 3 li { list-style-type : none; }
使用类名 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <ul > <li >项目一</li > <li class="special">项目二</li > <li >项目 <em >三</em ></li > </ul > .special { color : orange; font-weight : bold; } #对类名是special,标签类型是li 和span 使用样式 li .special ,span .special { color : orange; font-weight : bold; }
根据元素在文档中的位置确定样式 1 2 3 4 5 li em { color : rebeccapurple; }
根据状态确定样式 1 2 3 4 5 6 7 8 a :link { color : pink; } a :visited { color : green; }
同时使用选择器和选择器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 article p span { ... }h1 + ul + p { ... }body h1 + p .special { color : yellow; background-color : black; padding : 5px ; }
冲突规则
层叠:后面的样式会覆盖前面的
优先级:类被认为更具体,优先级高于元素选择器
主流JavaScript框架
Ember:Ember 于 2011 年 12 月发布,最初作为 SproutCore 项目的延续而开始。比其新式的替代品(例如 React 和 Vue),作为老框架,它的用户人数要少得多。但因其稳定性、社区支持以及编程原则都非常良好,它仍然享有很高的知名度
Angular:一种基于组件的框架,使用声明式的 HTML 模板。在应用构建时,框架的编译器将 HTML 模板转换为优化好的 JavaScript 指令,这一过程对开发者是透明的。Angular 使用 TypeScript
Vue
React:2013年Facebook发布
.js .jsx .ts .tsx
.js:JavaScript文件
.jsx:JavaScript文件并使用JSX语法
.ts:TypeScript文件
.tsx:TypeScript文件并使用JSX语法
JSX 就是Javascript和XML结合的一种格式。 React发明了JSX,利用HTML语法来创建虚拟DOM。 当遇到<,JSX就当HTML解析,遇到就当JavaScript解析。JSX 只是为 React.createElement(component, props, …children) 方法提供的语法糖。
JavaScript 数据类型 null, undefined 和布尔值 1995年 JavaScript 诞生时,最初像 Java 一样,只设置了null表示”无”。根据 C 语言的传统,null可以自动转为0。
上面代码中,null转为数字时,自动变成0。
但是,JavaScript 的设计者 Brendan Eich,觉得这样做还不够。首先,第一版的 JavaScript 里面,null就像在 Java 里一样,被当成一个对象,Brendan Eich 觉得表示“无”的值最好不是对象。其次,那时的 JavaScript 不包括错误处理机制,Brendan Eich 觉得,如果null自动转为0,很不容易发现错误。
因此,他又设计了一个undefined。区别是这样的:null是一个表示“空”的对象,转为数值时为0;undefined是一个表示”此处无定义”的原始值,转为数值时为NaN。
经典使用场景:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var i;i function f (x ) { return x; } f () var o = new Object ();o.p function f ( ) {}f ()
布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。
如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。
undefined
null
false
0
NaN
“”或’’(空字符串)
数值 JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 0xff 0o377 0b11 5 - 'x' Math .pow (2 , 1024 )0 / 0 1 / 0
字符串和数组 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 'aa' "bb" var s = 'hello' ;s[0 ] s[1 ] s[4 ] 'hello' [1 ] s.length
对象 对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 var obj = { foo : 'Hello' , bar : 'World' }; obj.foo obj['foo' ] var obj = { 1p : 'Hello World' }; var obj = { '1p' : 'Hello World' , 'h w' : 'Hello World' , 'p+q' : 'Hello World' }; var obj = { p : function (x ) { return 2 * x; } }; obj.p (1 ) var obj = { key1 : 1 , key2 : 2 }; Object .keys (obj);var obj = { p : 1 };'p' in obj 'toString' in obj
函数 函数的声明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 function print (s ) { console .log (s); } var print = function (s ) { console .log (s); }; var print = function x ( ){ console .log (typeof x); }; x print ()var add = new Function ( 'x' , 'y' , 'return x + y' ); function add (x, y ) { return x + y; } function add (x, y ) { return x + y; } var operator = add;function a (op ){ return op; } a (add)(1 , 1 )f ();function f ( ) {}function f1 ( ) {}f1.name function f (a, b ) {}f.length
数组 本质上,数组属于一种特殊的对象。typeof运算符会返回数组的类型是object。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 var arr = ['a' , 'b' , 'c' ];var arr = [ {a : 1 }, [1 , 2 , 3 ], function ( ) {return true ;} ]; arr[0 ] arr[1 ] arr[2 ]
标准库 export 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 export <let /const /var > x ...;export function x ( ) ...export class x ...export {x, y, z, ...};export { x as y, ...};export { x as default , ... };export ... from ...;export default <expression