包管理器
概念1.什么是包?包 (package) 是一个或多个JS模块的集合,它们共同完成某一类功能,可以简单的认为每一个工程就是一个包
有些包是为了给别人用的,这种包也叫第三方库
2.什么是包管理器?
包管理器是一个管理包的工具,前端常见的包管理器有npm、yarn、cnpm、pnpm等
包管理器具备以下能力:
让开发者可以轻松的下载包
让开发者可以轻松的升级和卸载包
能够自动管理包的依赖
3.什么是cli?
cli是一个命令行工具,它提供一个终端命令,通过该命令可以完成一些功能
node查找包的顺序1require("a")
1.查找是否有内置模块a
2.查找当前目录的node_modules中是否有a
3.依次查找上级目录的node-modules中是否有a,直到根目录
配置源查看源1npm config get registry
配置淘宝镜像源1npm config set registry https://registry.npm.taobao.org
配置官方源1npm config set registry https://registry. ...
模块化
模块化在这个学习过程的位置如上:
JS没有模块化时会产生的问题:1.经常容易造成全局变量的污染
2.容易发生JS的依赖混乱
模块化的标准1.CommonJS 社区标准
2.ES Module 官方标准
CommonJSCommon JS 规范:1.所有的js文件均是一个模块,运行的模块入口模块2.所有的模块中的全局变量、函数,均不会产生污染3.当一个模块需要提供一些东西给别的函数使用时,需要把这些东西「导出」4.当一个模块需要用到别的模块的东西的时候,需要「导入」(模块路径必须以/或./开头)5.模块有缓存,第一次运行模块后,导出结果会被缓存,之后再使用该模块,直接使用缓存结果
标准类型:社区规范
支持环境:node
依赖类型:动态依赖
Common JS 导出和导入导出:1module.export = 导出的值
导入:1require("模块路径")//函数返回模块导出的值
Common JS例子:config.js:
123456789module.exports = { wordDuration: ...
Echarts
Echarts引入方式如下:
1<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.3/dist/echarts.min.js"></script>
123456789101112131415161718192021222324252627282930313233343536//入门实例<body> <!-- 为 ECharts 准备一个定义了宽高的 DOM --> <div id="main" style="width: 600px; height: 400px"></div> <script type="text/javascript"> // 基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById('main ...
Axios
AxiosAxios是干什么的上古浏览器页面在向服务器请求数据时,因为返回的是整个页面的数据,页面都会强制刷新一下,这对于用户来讲并不是很友好。并且我们只是需要修改页面的部分数据,但是从服务器端发送的却是整个页面的数据,十分消耗网络资源。而我们只是需要修改页面的部分数据,也希望不刷新页面,因此异步网络请求就应运而生。
Ajax(Asynchronous JavaScript and XML):异步网络请求。Ajax能够让页面无刷新的请求数据。
实现ajax的方式有多种,如jQuery封装的ajax,原生的XMLHttpRequest,以及axios。但各种方式都有利弊
为什么需要Axios
原生的XMLHttpRequest的配置和调用方式都很繁琐,实现异步请求十分麻烦
原生XMLHttpRequest实现ajax请求如下:
123456789101112131415161718192021var request = new XMLHttpRequest(); // 创建XMLHttpRequest对象//ajax是异步的,设置回调函数request.onreadystatechang ...
JavaScript原型和原型链
原型链如上:
JavaScript原型众所周知,JS的复杂类型都是对象类型(Object),而JS不是一门完全面向对象编程的语言,所以如何涉及继承机制,就是一个问题。
构造函数因为JS中没有类(Class)这个概念,所以JS的设计者使用了构造函数来实现继承机制。
ES6中的class可以看作只是一个语法糖,它的绝大部分的功能,ES5都可以做到,新的class写法只是让原型的写法更加的清晰、更像面向对象编程的语法而已。
123456789// 构造函数function Person(name, age) { this.name = name; this.age = age;}// 生成实例const p = new Person('zhangsan', 18);
JS通过构造函数来生成实例。但是又出现了一个新的问题,在构造函数中通过this赋值的属性或者方法,是每个实例的实例属性以及实例方法,无法共享公共属性。所以又设计出了一个原型对象,来存储这个构造函数的公共属性以及方法。
构造函数创建一个实例的过程
创建一个新对象
将构造函数的 ...
jQuery
jQueryJavaScript 库用于开发软件的子程序集合。库和可执行文件的区别是,库不是独立程序,他们是向其他程序提供服务的代码库链接。
JavaScript 库:即 library,是一个封装好的特定的集合(方法和函数)。就是把各种常用的代码片段,组织起来放在一个 js 文件里,组成一个包,这个包就是 JavaScript 库。
简单理解:就是一个 JS文件,里面对我们原生 JS代码进行了封装,存放到里面。这样我们就可以快速高效的使用这些封装好的功能了。
对于第三方库,除了下载使用,还可以通过CDN在线使用,CDN称之为内容分发网络,简单来说,就是提供很多的服务器,用户访问时,自动就近选择服务器给用户提供资源
国内使用广泛的免费CDN站点:https://www.bootcdn.cn/
jQuery介绍jQuery 是一个快速、简洁的 JavaScript 框架,是继 Prototype 之后又一个优秀的 JavaScript 代码库( 或 JavaScript 框架 )。 jQuery 设计的宗旨是 “write Less,Do More”,即倡导写更少的代码,做更多的事情。
...
Git
GIT某些命令行指令1234pwd 显示当前绝对路径cd .. 回到上一目录cd \ 回到根目录ls 显示当前文件目录(如learngit内含readme.txt,显示readme.txt)
用git reflog或者git log后,一直出现no next tag <press return>,此时按q即可退出。
初始化仓库
1$ git init
将文件添加到仓库
1$ git add readme.txt
用commit -m命令,将文件提交到仓库
1234$ git commit -m "wrote a readme file"[master (root-commit) 6014831] wrote a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txt
将readme.txt内容更改,再尝试提交
12$ git add readme.txt$ git commit -m"修改的描述"
用git ...
网络基础(一)
网络基本概念客户端和服务端1.不管是客户端,还是服务器,它们都是一个应用程序,而不是一台计算机。
客户端和服务器可以分布在不同的计算机上,也可以在同一台计算机上,并不需要特殊看待。比如我们之前接触的live server插件,就是一个服务器,它运行在本地的计算机上。大部分后端开发的就是服务器程序,前端的Node技术也能开发服务器程序。
2.客户端和服务器的这种交互模式称之为「经典C/S结构」。在这种结构中,如果客户端是浏览器,则我们称之为B/S结构。
3,服务器程序往往是为互联网产品提供服务,因此又称之为web服务器。
4.一次完整的交互,总是从请求开始,响应结束。
URL要完成一次请求和响应,首先需要让客户端找到服务器,不仅如此,还要找到服务器上我们想要的资源。在现实生活中,如果我们要找一个人,我们可以通过一个地址来找到他。
和现实生活类似,在互联网中,我们可以通过一个叫URL地址的东西找到我们想要的资源。
URL全称uniform resource locator,统一资源定位符。
它是一个字符串,用于表达互联网中某个资源的位置。
URL地址可以很长,也可以很短 ...
ES6详解(四)
函数的扩展函数参数的默认值ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面。
1234567function log(x, y = 'World') { console.log(x, y);}log('Hello') // Hello Worldlog('Hello', 'China') // Hello Chinalog('Hello', '') // Hello
1234567function Point(x = 0, y = 0) { this.x = x; this.y = y;}const p = new Point();p // { x: 0, y: 0 }
好处:
①阅读代码的人,可以立刻意识到哪些参数是可以省略的,不用查看函数体或文档;
②其次,有利于将来的代码优化,即使未来的版本在对外接口中,彻底拿掉这个参数,也不会导致以前的代码无法运行。
参数变量是默认声明的,所以不 ...
HTML+CSS进阶
1.表单进阶注意点:
当设置类似注册,登录的表单布局时,最外层的元素最好不要用div元素,而是用form元素,能实现表单的提交功能
表单标签:
布尔属性:布尔属性是控制元素的某一个状态,是一种比较特别的属性。布尔属性主要出现在表单元素上
下面是分讲几个布尔属性的用法
checked: 其实所有表单元素都有此属性,但只有radio, checkbox能在图形上表现出勾选的效果,一旦勾选上,其name及value就能提交
selected: option的属性,一旦选上,就出现高亮状态,并将其name,value(没有就取其innerHTML)提交上去
readonly: 用于输入性的控件,让用户只能看,不能修改
disabled: 让表单元素蒙上一个灰白的色调,用户无法操作它,也不会提交其内容
multiple:让下拉框变成多选形式,可以按着SHIFT进行多选
hidden: 用于所有元素,这是HTML5新增的布尔属性,效果如同display:none,但其优先级低于CSS,因此没有大规范使用
contentEditable: 应用于所有可见的非表单元素,让元素也像INPUT那样编辑它 ...