js前端技术
Posted Python爱好者666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js前端技术相关的知识,希望对你有一定的参考价值。
一、前端技术
1、html
HTML(hypertext markup language)超文本标记语言,不同于编程语言。
超文本就是超出纯文本的范畴,描述文本的颜色、大小、字体。
HTML由一个个标签组成,标签各司其职,有的提供网页信息,有的负责图片,有的负责网页布局。
超文本需要显示,就得有软件呈现超文本定义的排版格式,,例如显示图片、表格、显示字体的大小,颜色,软件就是浏览器。
超文本的诞生是为了解决纯文本不能格式显示问题,是为了好看,但是只用通过网络分享超文本的内容,所以制定了HTTP协议。
2、浏览器
1)历史、1980年代,tim berners-Lee为cern设计基于超文本思想的enquire,以促进科研人员之间信息更新和共享。19899年其编写了《信息化管理;建议》一文,并构建基于Internet的hypertext系统,并在cern开发了world wide web项目。打造了世界上第一站。于1991年8月6日上线。
Tim berners-lee于1990年发明了第一个浏览器,还发明了HTTP协议。
1994年MIT创建了w3c。w3c万维网联盟,负责万维网持续发展,提出w3c的标准应该基于无专利权、无版税。
Marc Andreessen于1993年发明了mosaic浏览器,看到了技术前景,不久后成立自己的公司---网景公司Netscape,1994发不了Netscape navigator浏览器,席卷全球。
1995年微软发布IE。
1999年网景被aol收购,收购后,Netscape公开了浏览器代码。创建了Mozilla组织。Mozilla组织使用gecko引擎重写浏览器。。
2003网景被解散。
2008年google的Chrome浏览器待着v8引擎横空出世。
2)网景公司
HTTP cookie,解决HTTP无状态。
Ssl协议:
Jar格式文件,将Java的class文件打包压缩,并加上签名。
2012年4月9日,微软购买800项美国在线的专利或专利授权。
3)浏览器技术
浏览器是特殊的客户端。
浏览器软件分为两个部分
外壳:
外壳提供用户交互的界面。
内核(引擎engine)
提供HTML,css,图像的渲染引擎。提供DOM编程接口。
提供Javascript引擎。
排版(渲染)引擎 |
浏览器 |
说明 |
Gecko |
Firefox |
|
Trident |
IE,AOL |
|
Khtml |
|
|
Presto |
oPera |
|
Webkit |
Safari,Chrome |
|
Blink |
Chrome,Opera |
|
Js引擎:
Jscript、tracemonkey(firefox) v8等
使用jquery等框架来解决兼容性问题。
3、js
是一种动态的弱类型的脚本解释性语言。和HTML、css秉承三大web核心技术。
4、ES
ECMAscript:是ecma国际组织
JavaScript是商品名。
2009年 ES5发布
2015年ES6发布
5、v8引擎
谷歌推出的,使用的是bsd协议开源。
二、nodejs
1、nodejs简介
Nodejs是服务器端运行JavaScript的开源、跨平台运行环境。
作者是瑞安达尔(ryan dahl),2009年发布,使用了v8引擎,采用时间驱动,非阻塞,异步IO模型。
2012年,npm软件包管理器诞生,通过其,可以方便的发布,分享nodejs的库和源代码。
Nodejs4.0引入了ES6语言的特性。
2、安装
国内阿里云镜像
https://npm.taobao.org/mirrors/node
Linux:
https://npm.taobao.org/mirrors/node/latest-v8.x/node-v8.11.3-linux-x64.tar.xz
windows:
https://npm.taobao.org/mirrors/node/latest-v8.x/node-v8.11.3-x64.msi
默认路径安装:
3、开发
Visual studio code
https://code.visualstudio.com/Download
4、注释
和c、Java一样
//单行注释
/*comment*/ 多行注释,在语句中间使用。
str = ‘hello‘ + /*comment*/ ‘student‘
5、常量和变量
标识符
标识符必须是字母、下划线、美元符号和数字,但必须是字母、下划线、美元符号开头。,不能是数字开头。
标识符区分大小写。
声明
var a声明 a值为undefined 声明全局变量
let b 声明 let 块变量,局部变量。
const c常量声明时候必须赋值。后期不允许更改。明确知道一个标识符定以后不在膝盖,声明的时候使用const常量,减少被修改的风险。
能给常量就不用变量。
变量和常量声明和初始化的过程中是可以分开的。
var a
let b
console.log(a,b)
a = 1
b = ‘a string‘
console.log(a,b)
//const c //不能定义,因为const定义时候必须赋值,之后不可以再次进行更改
const c = 100
console.log(c)
var y //只是复制,y的值为undefined
var x = 1 //规范的声明并初始化,声明全局或局部变量
function hello()
{
var a //只是声明,a为undefined,作用域是在函数中
a = 100 //赋值
}
//console.log(2,a) //抛出错误,变量a未定义
//a = 200 //不能提升作用域
//var a = 200;hello(); //var提升作用域
//console.log(3,a)
6、数据类型
序号 |
名称 |
说明 |
1 |
number |
数值型 |
2 |
boolean |
布尔型,true和False |
3 |
String |
字符串 |
4 |
Null |
只有一个null值 |
5 |
Undefined |
变量声明未赋值的 |
6 |
Symbol |
Es6新引入的类型 |
7 |
object类型 |
以上基本类型的复合类型,容器 |
ES是动态弱语言,弱类型语言,虽然先声明了变量,但是变量可以重新赋值任何类型。
//string
console.log(‘----string-------‘)
console.log(a = 3+‘abc‘,typeof(a))
console.log(a = null + ‘abc‘,typeof(a))
console.log(a = undefined + ‘abc‘,typeof(a))
console.log(a = true + ‘abc‘,typeof(a))
//number
console.log(‘----number----‘)
console.log(a = null + 1,typeof(a))
console.log(a = undefined + 1,typeof(a)) //undefined没有办法转成对应的数字,只是显示男,not a number
console.log(a = true + 8,typeof(a))
console.log(a = false + 8,typeof(a))
//boolean
console.log(‘----bool----‘)
console.log(a = null + true,typeof(a))
console.log(a = null + false,typeof(a))
console.log(a = undefined + true,typeof(a)) //undefined没有办法转成对应的数字
console.log(a = undefined + false,typeof(a)) //undefined,不能转成对应的数字
console.log(a = null & true,typeof(a))
console.log(a = undefined & true,typeof(a))
//短路
console.log(a = null && true,typeof(a))
console.log(a = false && null,typeof(a))
console.log(a = false && ‘abc‘,typeof(a))
console.log(a = true && ‘abc‘,typeof(a))
console.log(a = true && ‘‘,typeof(a))
//null
console.log(a = null + undefined,typeof(a))
----string-------
3abc string
nullabc string
undefinedabc string
trueabc string
----number----
1 ‘number‘
NaN ‘number‘
9 ‘number‘
8 ‘number‘
----bool----
1 ‘number‘
0 ‘number‘
NaN ‘number‘
NaN ‘number‘
0 ‘number‘
0 ‘number‘
null ‘object‘
false ‘boolean‘
false ‘boolean‘
abc string
string
NaN ‘number‘
类型运算:
String:与str相加全部转化为str类型。
Number:与number相加全部转化为number
Boolean类型:转为话number类型
弱类型,不需要强制类型转换,会隐士的类型转换。
总结:
遇到字符串,加号就是拼接字符串。
如果没有遇到字符串,加号就是把其他的所有的类型都当做数字处理。
Undefined特殊,因为他没有定义值,所以是一个特殊的数字nan.
如果运算符是逻辑运算符,短路符,返回的就是短路时候的类型,没有隐士转换,
尽量使用显示的转换。
7、字符串
将一个值利用单引号或者双引号引起来就是字符串。
Es6提供了反引号定义一个字符串,可以支持多行,还可以支持插值。
字符串:插值。使用反引号$符号进行插值,赋值即定义。
let a = ‘abc‘
let b = ‘ced‘
let c = `line1
line2
line3
`
console.log(c)
let name = ‘tom‘,age = 19
console.log(`hi name is ${name},age${age}`)
line1
line2
line3
hi name is tom,age19
8、转义字符
名称 |
说明 |