1. Node开发概述

1. Node开发概述

1.1 为什么要学习服务器端开发基础

  • 能够和后端程序员更加紧密的配合
  • 网站业务逻辑前置,学习前端技术需要后端技术支持(Ajax)
  • 扩宽知识视野,能够站在更高的角度审视整个项目

1.2 服务器端开发要做的事情

  • 实现网站的业务逻辑 比如登录
  • 数据的增删改查 比如电商平台的购物车

1.3 为什么选择node

  • 使用JavaScript语法开发后端应用
  • 一些公司要求前端工程师掌握node开发
  • 生态系统活跃,有大量开源库可以使用
  • 前端开发工具大多基于node开发

1.4 node是什么

node是一个基于Chrome V8引擎的JavaScript代码运行环境

Chrome V8引擎 JavaScript代码执行引擎。

LTS = Long term support 长期支持版 稳定版

current 拥有最新特性 实验班

powershell

node -v 查看安装版本

1.5 node.js 组成

  • JavaScript由三部分组成,ECMAScript DOM BOM 其中ECMAScript是核心 DOM BOM是浏览器这个运行环境为JavaScript这个语言提供的api
  • nodejs是由ECMAScript及node环境提供的一些附加api组成

1.6 node.js 模块化开发

JavaScript开发的弊端:文件依赖和命名冲突

所以需要模块化,需要的开放出去 不需要的封装掉

软件中的模块化开发:一个功能就是一个模块,多个模块可以组成完整应用,抽离一个模块不会影响其他功能的运行。比如

app.js

user.js post.js goods.js

addUser.js deleteUser.js findGood.js addGood.js

node.js 规定一个js文件就是一个模块,模块内部定义的变量和函数默认情况下载外部无法得到

exports对象进行成员导出,使用require方法导入其他模块

exports.version = version;
exports.sayhi = sayhi;

// b.js
let a = require('./b.js');
console.log(a.version);
module.exports.version = version;

底层理解 exports 和 module.exports 都是对象,指向同一地址空间,如果不同的话,以module.export为准

1.7 系统模块fs 文件操作

const fs = require('fs');

读取文件内容

fs.readFile('文件路径/文件名称'[,'文件编码'],callback);
fs.readFile('../css/main.css','utf-8',(err,doc) => {
    // 如果文件读取发生错误,参数err的值为错误对象,否则err为null
    // doc参数为文件内容
    if(err ==null){
        
    }
})

node 中所有的回调函数第一个参数都是error。错误优先的回调函数

写入文件

fs.writeFile('文件路径/文件名称''数据',callback)

例如项目中写入错误日志。

const content = '';
fs.writeFile('../index.html',content,err => {
    if(err != null){
        console.log(err);
        return;
    }
    console.log('文件写入成功')})

系统模块path 路径操作

为什么要进行路径拼接??

  • 不同操作系统的路径分隔符不统一
  • Windows是 \ /
  • Linux是/
  • Linux系统通常被用作网站的服务器

比如 图片上传功能 存在服务器的某一个硬盘文件夹

路径拼接语法

path.join('路径''路径',...)

相对路径 vs 绝对路径

  • 大多数情况下使用绝对路径,写相对路径不安全
  • 因为执行的时候一般是当前工作目录,所以相对路径不安全
  • 使用__dirname(两个下划线)获取当前目录所在绝对路径。
  • require时相对路径是相对当前目录,所以require可以使用相对路径

1.8 第三方模块

包,第三方模块,多个文件组成并在一个文件夹中

存在形式

  • js文件,提高项目具体功能API接口
  • 命令行工具存在

获取第三方模块

npmjs.com 第三方模块的存储和分发仓库

npm (node package manager): node 第三方模块管理工具

  • npm install
  • npm uninstall

本地安装和全局安装

  • 命令行工具:全局安装
  • 库文件:本地安装

1.9 第三方模块 nodemon

在nodejs中每次修改文件都要在命令行中重新执行该文件,非常繁琐

  1. npm install nodemon -g 下载 全局安装
  2. 在命令行工具中使用nodemon命令代替node执行
  3. 用 ctr+C退出

1.10 第三方模块 nrm

nrm (npm registry manager): npm下载地址切换工具

  1. npm install nrm -g
  2. 查询 nrm ls
  3. 切换 nrm use 下载地址名称

1.11 第三方模块 Gulp

基于node平台开发的前端构建工具

将机械化操作编写成任务,想要执行机械化操作时执行一个命令行命令任务就能自动执行了

用机器代替手工,提高开发效率

  1. npm install gulp 下载gulp库文件
  2. 在项目根目录下建立 gulpfile.js
  3. 重构项目的文件夹结构 src目录放源代码 dist目录放构建后文件
  4. 在gulpfile.js中编写任务
  5. 命令行工具中执行任务

1.12 package.json文件

package.json的作用

项目描述文件,记录了当前项目信息,例如项目名称、版本、作者,github地址,当前项目依赖了哪些第三方模块等。使用npm init -y命令生成(y是全部默认值 (yes))

{
  "name": "test",
  "version": "1.0.0",
  "description": "test main是项目主入口文件 scripts是命令的别名 ISC是开发源代码协议",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build":"nodemon app.js"
  },
  "keywords": [],
  "author": "Jiaqi Guo",
  "license": "ISC"
}

在终端写npm run build可以执行nodemon app.js命令

项目依赖——线上线下都需要

开发依赖——开发阶段需要依赖,线上运营阶段不需要依赖的第三方包 使用npm install xxx --save -dev将包添加在package.json文件中的DevDependencies字段中, 比如 gulp

npm install 下载所有的依赖

npm install --production 服务器环境 下载项目依赖

package-lock.json

记录模块之间的依赖关系

1.13 Node.js 中模块的加载机制

模块查找规则

require('./find.js');
require('./find');
  1. require方法根据模块路径查找模块,如果是完整路径,直接引入模块
  2. 如果模块后缀省略,先找同名js文件再找同名js文件夹
  3. 如果找到了同名文件夹,找文件夹中的index.js
  4. 如果文件夹中没有index.js 就找当前文件夹package.js中找main选项的入口文件
  5. 如果入口文件不存在或者没有则报错,模块没有被找到。

模块没有路径也没有后缀

  1. 系统模块
  2. 去node_modules文件夹中
  3. 首先看是否有改名字的js文件
  4. 文件夹
  5. 如果是文件夹看是否有index.js
  6. 如果没有index.js看文件夹中package.json的main选项确定模块入口文件
  7. 否则找不到报错
<think>好的,我现在需要帮助用户了解如何在自用网站中集成和使用AI大模型。首先,我需要理清整个流程,确保步骤清晰,并且涵盖关键点。根据用户提供的引用内容,他们可能对学习路线和资源感兴趣,但问题本身是关于实际集成的。 首先,我应该考虑用户可能的背景。他们可能拥有一个网站,但缺乏AI集成经验。因此,回答需要从基础开始,逐步引导。可能需要分步骤说明,比如选择模型、API集成、前端交互等。 接下来,我需要确保回答中包含技术细节,但不过于复杂。例如,提到使用RESTful API或预训练模型,以及代码示例。用户提供的引用中提到有实战学习资料,可能涉及代码示例,所以给出Python或JavaScript的代码片段会合适。 然后,需要考虑安全性,比如API密钥的保护,以及性能优化,如缓存和异步处理。这些都是集成时常见的问题,用户可能不会考虑到,但必须提及。 另外,用户可能需要知道如何测试和监控模型,确保集成后的效果。这部分可以包括单元测试和用户反馈机制。 最后,生成的相关问题需要围绕集成过程中的潜在疑问,比如模型选择、性能优化、定制化方法等。这些问题可以帮助用户进一步探索。 现在,我需要检查是否有遗漏的步骤,比如模型部署选项(云端vs本地),或者具体框架如TensorFlow.js的应用。同时,确保语言简洁,用中文表达,符合用户要求。 可能还需要引用用户提供的资料,比如学习路线和实战教程,但用户的问题是关于集成方法,因此引用可能需要适当链接到他们的资源,比如如何获取API密钥或使用特定工具。 总结下来,回答的结构应该是:概述步骤,分步详细说明,每个步骤的技术实现,代码示例,注意事项,以及相关问题。确保覆盖所有关键点,并且引用相关资料帮助用户深入学习。</think>### 如何在自用网站中集成和使用AI大模型 将AI大模型集成到自用网站中需要以下关键步骤,结合技术实现和实际应用场景: #### 1. **选择合适的大模型服务** - **云端API**:直接调用第三方大模型API(如OpenAI、Google Vertex AI、Hugging Face Inference API),适合快速集成且无需本地算力。 ```python # 示例:调用OpenAI API import openai openai.api_key = "your-api-key" response = openai.Completion.create( engine="text-davinci-003", prompt="生成一段产品描述:", max_tokens=100 ) ``` - **本地部署**:若数据隐私要求高,可部署开源模型(如Llama 2、BLOOM),需准备GPU服务器和框架(PyTorch/TensorFlow)[^1]。 #### 2. **设计API交互逻辑** - 使用RESTful或GraphQL接口实现前后端通信: ```javascript // 前端调用示例(React) async function generateText(prompt) { const response = await fetch('/api/ai', { method: 'POST', body: JSON.stringify({ prompt }), headers: { 'Content-Type': 'application/json' } }); return await response.json(); } ``` #### 3. **优化模型性能** - **模型压缩**:使用量化(如TensorFlow Lite)或剪枝技术减少模型体积 - **缓存机制**:对高频查询结果缓存,降低API调用次数 - **异步处理**:耗时任务通过消息队列(如RabbitMQ)异步执行 #### 4. **实现典型应用场景** - **智能客服**:集成对话模型(如GPT-3.5)实现24/7问答 ```python # 基于会话历史的连续对话 messages = [{"role": "system", "content": "你是一个客服助手"}] def chat(user_input): messages.append({"role": "user", "content": user_input}) response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages ) return response.choices[0].message.content ``` - **内容生成**:自动生成文章/产品描述 - **数据分析**:集成Stable Diffusion生成营销片 #### 5. **安全与合规** - **数据加密**:使用HTTPS传输,敏感数据端到端加密 - **访问控制**:通过OAuth 2.0实现API权限管理 - **合规审查**:遵守GDPR等数据隐私法规,记录AI决策日志 #### 6. **监控与调优** - 使用Prometheus监控API响应时间和错误率 - 通过A/B测试对比不同模型版本效果 - 定期更新模型版本(如从GPT-3升级到GPT-4) ### 完整集成架构示例 ``` 用户浏览器 → 网站前端(React/Vue) → REST API(Flask/Django) → AI模型服务 ↘ 数据库(MySQL/MongoDB) ↘ 缓存层(Redis) ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值