JavaScript第23天

1、基本内容

        1、服务器端概念

                1、简单来说就是一台电脑

                2、生活中:微机

                3、商业中/国家中:小型机、中型机、大型机、超级计算机

        2、拥有服务器的方式

                1、买 - 对中小型公司不友好

                2、买一台配置好一点的微机 - 对于别的行业的公司也不太划算

                3、租云服务器 - 腾讯云、阿里云... 配置自选:配置越好,价格越高,按年收费

        3、对于我们开发人员来说

                1、硬件服务器 - 人人都有一台电脑

                2、软件服务器 - 中间件(软件可以将你的电脑变成一台服务器,人人都可以来访问你,就是我们要学习的Node.js

        4、软件架构:服务器很重要?

                1、C/S - Client客户端/Server服务器端

                        如:QQ、微信、大型网络游戏

                        优点:

                                1、用户体验感较好

                                2、运行稳定

                                3、对带宽的要求低

                        缺点:

                                1、占硬盘空间

                                2、更新过于麻烦 - 服务器端和客户端都要更新

                2、B/S - Browser浏览器端/Server服务器端

                        如:网页版QQ、微信、游戏

                        优点:

                                1、几乎不占硬盘

                                2、更新简单 - 只需要更新服务器端

                                3、电脑在差都玩得起

                        缺点:

                                1、用户体验感较差

                                2、对带宽的要求高

2、Node.js概述:不是JS,但是语法和JavaScript非常相似,他的竞争对手:Java、C++、C#、Python...

       1、 做的功能绝对不是特效!做的事和服务器端其他语言是一致(和数据库进行交互,成为了一个前端到数据库的中间桥梁)

       2、 目的

                1、使用代码搭建一个服务器&文件系统(服务器文件可以放在任何位置,但是不在你的电脑里,你可以根据网址来访问到我的东西)

                2、Node.js如何沟通前端和数据库

                3、全栈:图书管理系统(HTML+CSS+JS+Node+Mongo)

3、Node.js安装:node-v18.15.0-x64.msi - 一路往下点,哪里点不动了,就把哪里勾上,千万不要取消任何东西

        版本:16年初(0.12) 16年中(4.xx) 16年末(6.xx) - 更新速度快,意味着:发展迅速,有前景,其实也没有多大的变化,更新的最多的是提升了性能

        检查你安装成功没得:打开cmd输入:node -v - 查看版本号,如果有版本号代表你已经安装成功

4、Node.js如何运行:3种

        1、交互模式 - 临时测试

                打开cmd输入:node回车,就可以开始敲你的"js"代码

        2、脚本/文件模式 - 正式开发中

                1、先创建xx.js,里面书写自己的代码

                2、打开cmd输入:node 文件的绝对路径

        3、编辑器越来越强大了:安装插件,前提:至少两个方式能够成功,才可以安装插件

                vscode - code runner:对着文件出右键,第一个选项就是code runner,或者 右上角有一个开始按钮

5、Node.js知识

        1、js和node的区别

                相同点:都可以使用一切的ECMAScript的东西包括一切的API都可以使用,在服务器端不存在任何浏览器,所以不必担心兼容问题

                不同点:

                        1、JavaScript:DOM+BOM - 做特效

                        2、Node.js:虽然没有DOM+BOM,但是他却又10万以上的模块

        2、模块(module):每一个xx.js文件,都可以称之为是一个模块

                1、模块化开发:如果以一个网站来说,我们可以按功能分为很多模块:商家模块、商品模块....

                        分工合作:将每个模块交给对应的人,完成,最后再由【主模块】进行引入

                        1、每一个模块都有一个操作,可以用于公开/暴露自己的成员

                                exports:Node.js自带的一个预定义变量,可以直接使用,是一个对象,放在此对象里面的东西,就是允许公开的东西

                                语法:

<script>
    1、exports.属性名=属性值;
    2、module.exports={
        属性名:属性值,
        ...
    }
</script>
//错误导出法:
<script>
    exports={
        name:"小明",
        age:18,
        hobby:"学习"
    }
</script>

                         2、每一个模块(主模块)都有一个操作,可以用于导入/引入其他模块

                                require:Node.js自带的一个预定义变量,可以直接使用,是一个函数,函数中需要书写出引入模块的路径

                                语法:var x=require("./文件名")

                        问题:exports和module.exports有什么区别?

                                1、语法,写法,用法不同

                                2、都是用于公开暴露自己的成员的

                                        1、但是exports={},写法是错误的

                                        2、其实Node.js底层有一句话:exports=module.exports

                                        3、其实真正做公开功能的是module.exports

                                        4、如果你使用了exports={};//你创建了一个新的空对象,把module.exports,所以不在具有公开的功能

                2、模块的分类:

                        1、官方模块 - 大概有二十几个,但是重要的其实只有几个

                        2、第三方模块 - 多到数不清,提供了很多官方模块没有的东西,有一个网址npm可以去下载

                        3、自定义模块

                Node.js最大的特点:

                        1、快、非常快 - 以前最快的是php,js的速度是php的十六倍

                        2、为什么快:

                                1、因为官方提供的东西少,甚至连数据库的操作API都没有提供的

                                2、使用了chrome浏览器的v8引擎

                3、官方模块:不需要下载,在你安装node.js环境的时候就已经带上了,但是某的模块可以需要引入,某的模块可能不需要引入

                        1、Global模块:不需要引入的,可以直接使用

                                1、提供了五个预定义变量,可以直接使用

                                        1、__filename - 获取当前文件完整的绝对路径

                                        2、__dirname - 获取当前文件绝对路径,不包含文件的名字

                                                何时:vscode有些可能不支持node.js上书写相对路径,只能写绝对路径
                                        3、exports - 空对象,可以用于公开暴露自己的成员
                                        4、require - 函数,可以用于导入其他模块
                                        5、module - 指代当前模块本身,甚至包含着以上4个操作

                                2、定时器(周期性、一次性、瞬间定时器):定时器不是当初的js,只不过用法和当初一摸一样

                                3、console也不是当初的console,只不过用法和当初一摸一样

                        2、querystring模块:解析查询字符串,使其变成一个对象,可以获取到前端传到后端的消息

                                需要引入:var qs = require('querystring');

                                作用:解析url查询字符串部分的功能

                                要获得前端传来的每一个部分:obj.键名;

                               注意: 如果前端传来的是一个完整的url网址,他就解析不了了

                        3、url模块

                                需要引入:var url = require('url');

                                作用:提供了解析url各个部分的功能

                               var objUrl=url.parse("网址",true);//支持第二参数,是一个布尔值,默认为false,一旦设置为true,自动使用querystring模块的parse方法去解析查询字符串部分

                               真正的重点:

                                       1、查询字符串:objUrl.query.键名; - 前端form表单提交传到后端的东西

                                       2、路由/文件相对路径/请求地址:objUrl.pathname - 判断路由的不同,去读取不同的HTML发送给我们的用户看

                       4、Buffer模块:缓冲区,可以将数据变成一个16进制的数字,你可以理解为是Node.js中的一种新的数据类型,但是我们绝对不会手动使用,因为我们看不懂

                        5、fs模块

                                需要引入:var fs = require('fs');

                                异步读取文件

<script>
    fs.readFile("文件路径",(err,buf)=>{
        buf->读取到的内容
    })
</script>

                                异步写入文件

<script>
    fs.appendFile("文件路径","新内容"/buf,()=>{
        console.log("写入完毕后,要做什么,必须放在这里面");
    })//会替换掉原来的东西
</script>

                                强调:只有异步才能更完美的发挥Node.js的特点(快)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值