Bootstrap

关于HarmonyOS的学习

day33

一、模块化

1.node模块化

  let listMode = require('./modules/list')
  let {index, tab} = require('./modules/tab')
​
  // console.log(listMode)
  // console.log(tabMode)
​
  // console.log(listMode.index)
  // console.log(tabMode.index)
​
  // listMode.list()
​
  // console.log(index)
  // tab()

2.path模块

// path内置模块,专门用来处理路径
const path = require('path')
​
// 获取路径最后一部内容,一般用它来获取文件名称
// const result = path.basename('day13/code/modules/list.js')
// const result = path.basename('day13/code/pages/index.html')
// console.log(result)
​
// 给定的路径连接在一起,可以把路径片段拼成完整路径
// const result = path.join('day13', 'code', '03_path模块.js')
// const result = path.join('day13', 'code', '../','03_path模块.js')
// console.log(result)
​
// 读取绝对路径,直接从根路径下读取的
// const result = path.resolve(__dirname, 'day13', 'code')
// console.log(result)

3.url模块

    // url内置模块,可以把url地址里面所有的东西转成对象,方便后面的使用
    const url = require('url')
​
    const href = 'http://www.xxx.com:8080/pathname?id=100#bbb'
​
    // const result = url.parse(href, true)
    // console.log(result.query)
​
    const { query, protocol } = url.parse(href, true)
    console.log(query.id, protocol)

4.querystring模块

// querystring内置模块,可以把查询字符串转成对象,把对象转成查询字符串
const querystring = require('querystring')
// console.log(querystring.stringify({a:1, b: 2}))
// console.log(querystring.parse('a=1&b=2'))
​
// 把对象转查询字符串
console.log(querystring.encode({a:1, b: 2}))
// 把查询字符串转对象
console.log(querystring.decode('a=1&b=2'))

5.fs模块

// fs内置模块,读取和写入文件内容
const fs = require('fs')
​
// 异步读取
// 参数1表示的是读取文件的路径
// 参数2表示的是字符串编码
// 参数3表示的一个回调函数,err表示的错误信息,res表示的是结果
// fs.readFile('./data/hello.txt', 'utf-8', (err, res)=>{
//     console.log(res)
// })
​
// const res = fs.readFileSync('./data/hello.txt', 'utf-8')
// console.log(res)
​
// 异步写入
// fs.writeFile('./data/hello.txt', '哈哈,没有代码提示真爽!', ()=>{
//     console.log('写入成功')
// })
​
// 同步写入
// fs.writeFileSync('./data/hello.txt', '嘿嘿')
​
fs.readFile('./pages/list.html', 'utf-8', (err, res)=>{
    console.log(res)
})

6.hppt模块

// http模块,可以用来搭建后端的服务器,可以用来开发接口
const http = require('http')
​
// 访问服务器地址:127.0.0.1:端口号 localhost:端口号
// 创建一个服务
const server = http.createServer((request, response)=>{
    // 请求地址
    // console.log(request.url)
    // 请求类型
    // console.log(request.method)
    // 请求头信息
    // console.log(request.headers)
​
    // 设置字符串编码
    response.writeHead(200, {'Content-type':'text/html; charset=utf-8'})
    // res.write() 可以给前端返回数据,可以使用多个
    // response.write('hello,我是node服务器,你可以使用我了!')
    // response.write('嘿嘿')
    // 注意点:最终返回完毕后,还需要终止服务
    // res.end() 其实也可以给前端返回数据,所以一般使用它比较多
    // response.end()
​
    // response.end('{"name": "张涛}')
​
    // 复杂版本开发api接口,前端根据这个接口让后端返回需要的数据
    switch(request.url.split('?')[0]){
        case '/list':
            response.end('这是一个列表接口')
            break
        case '/cart':
            response.end('这是一个购物车接口')
            break
        case '/login':
            response.end('这是一个登录接口')
        default:
            response.end('not found')
    }
})
​
// 监听端口号
server.listen(2402, ()=>{
    console.log('您的服务器已经开启!')
})

二、npm

        npm包管理器
        + + 常用的插件、类库、框架都进行了集中管理,不用去各个的官网挨个进行下载,直接在npm里面可以下载
        + npm依赖的是node环境,没有node环境是单独使用不了包管理器
        + npm管理文件是以命名行的形式进行的
        + 直接可以在终端里面通过一些专门的命令来对文件的下载、删除进行操作
        npm常用命令
        + npm init -y 
          => 表示项目初始化
          => 当执行了这句命令后,表示你整个项目都可以npm包管理器进行管理
          => 当项目初始化成功后,项目目录里面会自动生成一个package.json的配置文件,这个文件里面有你项目的基本信息,例如:项目名称、版本号、项目启动命名等等
        + npm install 包@版本号
          => install表示安装,可以简化成i
          => 包表示的就是你需要下载的文件
          => @后面跟的是文件的版本号
          => 如果包名后面没有跟版本后,默认下载的是最新版本的
          => 使用了npm install后会默认在项目文件夹里面生成一个node_modules文件夹
          => node_modules文件夹专门用来存放你下载的包
        + npm uninstall 包@版本号
          => uninstall表示安装,可以简化成un
          => 表示删除下载的包文件
        + npm i || npm install
         => 当咱们把node_modules文件夹删除后
         => 执行这个命名,可以根据package.json文件里面的记录恢复node_modules文件夹
        pnpm
        + 在npm的基础上衍生而来的一个包管理器
        + 它的速度会更快
        + 项目初始化的时候还是得使用npm init -y
        + 下载文件的时候把之前的npm换成pnpm即可

三、RESTful

RESTful 风格是一种设计 Web API 的方式,它让 API 更加直观、易于理解和使用

获取所有文章列表
GET /articles
​
获取单个文章详情
GET /articles/123 表示获取ID为123的文章
​
注册新用户
POST /users
​
{
  "username": "jane_doe",
  "email": "[email protected]",
  "password": "dw@ssw0rd"
}
​
修改用户信息
PUT /users/jane_doe
​
{
  "email": "[email protected]",
  "password": "newP@ssw0rd"
}
​
删除用户账户
DELETE /users/jane_doe

RESTful 风格的例子中:

  • URL 直接表示资源(如 /articles 表示文章集合,/articles/123 表示ID为123的文章),且使用标准HTTP动词(GET、POST、PUT、DELETE)来表示对资源的操作。

  • 请求参数通常包含在请求体(POST、PUT)或直接作为URL路径的一部分(GET、DELETE),而不是作为查询参数。

不遵循 RESTful 风格

获取所有文章列表
GET /getArticlesList

获取用户信息
GET /getUserInfo?username=john_doe

删除用户
POST /removeUser

非 RESTful 风格的例子中:

  • URL 表示的是操作而非资源(如 /getArticlesList/addArticle),且可能使用任何HTTP动词(通常为POST)来执行各种操作。

  • 请求参数往往以查询参数(如 ?id=123)或请求体中的特定字段(如 newTitlenewContent)的形式出现,不直接反映资源本身。

总的来说,RESTful 风格通过清晰的资源模型、标准的HTTP方法和简洁的URL结构,使得API更易于理解和使用,同时也便于自动化工具、浏览器插件等对API进行处理和交互。

;