当前位置: 首页 > news >正文

网站建设有云端吗西安网站seo收费

网站建设有云端吗,西安网站seo收费,本地网站构建,dedecms 网站标题 设置1. Bun Bun 是一个全新的 JavaScript 运行时#xff0c;类似于 Node.js 和 Deno#xff0c;它专注于提供出色的性能和开发者体验。Bun 的一些特点包括#xff1a; 快速的性能#xff1a;Bun 旨在提供高性能#xff0c;无论是启动时间、执行速度还是安装依赖包的速度。 兼… 1. Bun Bun 是一个全新的 JavaScript 运行时类似于 Node.js 和 Deno它专注于提供出色的性能和开发者体验。Bun 的一些特点包括 快速的性能Bun 旨在提供高性能无论是启动时间、执行速度还是安装依赖包的速度。 兼容性Bun 致力于与现有的 JavaScript 生态系统兼容包括 Node.js 的软件包。 内建的软件包管理器Bun 内置了一个软件包管理器这意味着你可以直接使用它来安装 npm 包无需额外的工具。 现代 JavaScriptBun 支持现代 JavaScript 语法和特性让开发者能够使用最新的 JavaScript 特性编写代码。 原生的 Web APIBun 提供了许多浏览器中的 Web API这使得编写服务器端代码与编写客户端代码更为相似。 Bun 还在积极开发中可能会添加更多特性和改进。 2. 什么是运行时 “运行时”Runtime在计算机编程中指的是一个软件程序执行时提供的环境其中包含了执行程序所必需的库、调试和其他支持功能。在 JavaScript 的世界中运行时负责解释执行 JavaScript 代码并提供可以由 JavaScript 代码调用的 API例如处理文件系统、网络通信、定时器等。 就 JavaScript 语言而言最著名的运行时环境是浏览器和 Node.js。浏览器提供了一个针对客户端脚本的运行环境允许 JavaScript 与网页交互控制 DOM 元素响应事件等。而 Node.js 则提供了一个服务器端的运行环境扩展了 JavaScript 的能力使其可以进行文件系统操作、TCP/IP 通信等不受浏览器安全限制的操作。 Bun 运行时旨在服务于现代 JavaScript 生态系统。它有三个主要的设计目标 速度Bun 启动迅速运行快速。它扩展了 JavaScriptCore这是为 Safari 打造的注重性能的 JS 引擎。随着计算转向边缘计算这一点至关重要。优雅的 API Bun 提供了一组最小的、高度优化的 API用于执行常见任务比如启动 HTTP 服务器和写文件。统一的开发体验Bun 是一个用于构建 JavaScript 应用的完整工具包包括一个软件包管理器、测试运行器和打包工具。 Bun 被设计为 Node.js 的替代品。它固有地实现了数百个 Node.js 和 Web API包括 fs、path、Buffer 等。 Bun 的目标是运行世界上大多数的服务器端 JavaScript并提供工具以提高性能降低复杂性并成倍增加开发人员的生产力。 3. 诞生背景 Bun 的诞生背景和它的开发都是为了满足现代 JavaScript 生态系统中日益增长的性能需求和开发体验改进的需求。随着 JavaScript 应用程序日益复杂开发者社区对工具的性能和效率要求越来越高。Bun 团队看到了这种需求并试图通过创建一个高速、高效且功能丰富的新运行时来解决这些问题。 Node.js 性能并不差实际上它已经足够强大可以胜任广泛的服务器端应用。然而Node.js 是一个相对较老的平台它的设计并不总是能够充分利用现代硬件的性能或者满足现代开发流程中的所有需求。还有一些历史遗留问题如对老旧回调模式的依赖以及在一些场景中的性能瓶颈。 Deno 是由 Node.js 的创始人之一 Ryan Dahl 启动的项目目的是创建一个更安全、更现代的 JavaScript 运行时环境。Deno 试图解决 Node.js 存在的一些设计问题比如通过提供首级的异步支持改进 API引入 TypeScript 作为一级语言支持以及实现更加安全的权限模型等。 至于为什么 Deno 没有超过 Bun这可能有几个原因 时间和社区接受度Deno 相对于 Node.js 仍然是一个较新的项目并且需要时间来建立社区和生态系统。Bun 作为一个更新的项目能够从现有的生态系统中学习并试图提供即使是比 Deno 还要更快的性能和更好的开发体验。 性能Bun 的一些设计决策特别是使用 Zig 和 JavaScriptCore据称提供了出色的性能。这可能吸引了那些对性能有严格要求的开发者。 特性和方便性Bun 提供了一个完整的开发工具集包括软件包管理器、测试运行器和打包工具这使得开发者可以在一个统一的平台上工作而不需要集成多个不同的工具。 市场定位和宣传Bun 的市场定位和传播方式可能也对其受欢迎程度产生了影响。 4. bun 的一些性能数据对比 5. 我需要用 bun 么 确定是否应该在项目中使用 Bun 通常取决于项目的特定需求和 Bun 提供的功能是否能为你的项目带来实际的好处。以下是一些考虑因素可以帮助你决定是否在项目中使用 Bun 性能需求如果你的项目对启动时间或运行性能有严格要求那么使用 Bun 可能是一个好选择因为 Bun 提供了优化的性能。 现代化工具链Bun 提供了一个集成的开发环境包括软件包管理器、测试运行器和打包器。如果你希望使用一个统一的工具链来简化开发流程Bun 可能适合你的项目。 特定 API 的支持如果你的项目依赖于 Bun 提供的特定 API如高效的文件 I/O、HTTP 服务等并且这些 API 比传统 Node.js 或其他运行时提供的更符合你的需求那么选择 Bun 可能更有利。 生态系统兼容性虽然 Bun 努力兼容 Node.js 生态系统但如果你的项目依赖于大量特定的 Node.js 模块或功能你可能需要评估它们在 Bun 上的兼容性。 项目规模和复杂性对于小型或实验性项目尝试新的技术可能较少风险。但对于大型或生产级项目可能需要更谨慎地评估 Bun 的稳定性和成熟度。 社区和支持考虑 Bun 的社区支持和资源。一个活跌的社区和丰富的文档可以帮助你快速解决问题。 长期维护和更新评估 Bun 的开发进度和长期支持计划。选择一个有持续更新和支持的运行时对于确保项目的长期成功非常重要。 试验和评估最终最好的方式是在一个较小的项目或项目的一部分中试验 Bun评估它是否满足你的需求以及它在实践中的表现如何。 通过综合考虑这些因素你可以更好地决定是否应该在项目中使用 Bun。 6. 安装 bun macOS 在 macOS 上你可以使用 Homebrew 来安装 Bun brew install bunWindows 在 Windows 上你可以使用 Scoop 来安装 Bun scoop bucket add extras scoop install bun或者你可以从 Bun 的 GitHub 发布页面下载 Windows 的预构建二进制文件并手动添加到你的系统路径中。 Linux 对于 Linux 用户可以使用包管理器来安装。对于使用 APT 的 Debian 或 Ubuntu 系统 # 先添加 Bun 的 GPG 密钥 wget -qO- https://bun.sh/install | bash这将下载一个安装脚本你需要运行该脚本以完成安装过程。 Docker 你也可以在 Docker 容器中使用 Bun。你可以从 Docker Hub 上拉取 Bun 的官方镜像 docker pull bunsh/bun手动安装 最后你也可以从官方网站或 GitHub 发布页面下载 Bun 的预构建二进制文件并手动添加到你的系统路径中。 在使用以上任何一种方法安装 Bun 后你可以在终端或命令提示符中运行以下命令来验证安装 bun --version这应该会显示 Bun 的版本号表明安装成功。 7. bun cli 类别命令/标志描述命令run file使用 Bun 执行文件。lint运行 package.json 脚本。test使用 Bun 运行单元测试。x binary执行包二进制文件CLI如有需要则安装之bunx。repl启动一个和 Bun 交互的 REPL 会话。install为 package.json 安装依赖项bun i。add package向 package.json 添加依赖项bun a。remove package从 package.json 移除依赖项bun rm。update package更新过时的依赖项。link [package]注册或链接本地 npm 包。unlink注销本地 npm 包。pm subcommand额外的包管理工具。build files将 TypeScript 和 JavaScript 打包成单个文件。init从空白模板开始一个空的 Bun 项目。create template从模板创建一个新项目bun c。upgrade升级到 Bun 的最新版本。command --help打印命令的帮助文本。标志--watch文件变更时自动重启进程。--hot在 Bun 运行时、测试运行器或打包器中启用自动重载。--smol使用更少的内存但更频繁地运行垃圾收集。-r, --preload在其他模块加载前导入一个模块。--inspect激活 Bun 的调试器。--inspect-wait激活 Bun 的调试器在执行前等待连接。--inspect-brk激活 Bun 的调试器在代码的第一行设置断点并等待。--if-present如果入口点不存在则退出而不报错。--no-install在 Bun 运行时禁用自动安装。--install配置自动安装行为。选项包括 “auto”默认当没有 node_modules 时自动安装“fallback”仅当包缺失时“force”始终。-i执行时自动安装依赖项。等同于 --installfallback。-e, --eval将参数作为脚本进行评估。--prefer-offline在 Bun 运行时跳过包的旧态检查并从磁盘解析。--prefer-latest在 Bun 运行时始终使用包的最新匹配版本并总是检查 npm。-p, --port设置 Bun.serve 的默认端口。-b, --bun通过符号链接 node 强制脚本或包使用 Bun 的运行时而不是 Node.js。--silent不打印脚本命令。-v, --version打印版本并退出。--revision打印版本和修订版并退出。--env-file从指定文件加载环境变量。--cwd绝对路径用于解析文件和入口点。这会改变进程的当前工作目录。-c, --config指定 Bun 配置文件的路径。默认为 $cwd/bunfig.toml。-h, --help显示此菜单并退出。 8. bun API 主题APIsHTTP 服务器Bun.serve打包器Bun.build文件 I/OBun.file Bun.write子进程Bun.spawn Bun.spawnSyncTCP 连接Bun.listen Bun.connect转译器Bun.Transpiler路由Bun.FileSystemRouter流式 HTML 变换HTMLRewriter哈希Bun.hash Bun.CryptoHasherimport.metaimport.metaSQLitebun:sqlite外部函数接口FFIbun:ffi测试bun:testNode-APINode-API文件模式匹配GlobBun.Glob实用工具Bun.version Bun.revision Bun.env Bun.main Bun.sleep() Bun.sleepSync() Bun.which() Bun.peek() Bun.openInEditor() Bun.deepEquals() Bun.escapeHTML() Bun.fileURLToPath() Bun.pathToFileURL() Bun.gzipSync() Bun.gunzipSync() Bun.deflateSync() Bun.inflateSync() Bun.inspect() Bun.nanoseconds() Bun.readableStreamTo*() Bun.resolveSync() 上表展示了 Bun 官方 API 页面中列出的主题和相关 API。Bun 实现了一组原生 API这些 API 要么是直接挂载在全局的 Bun 对象上要么是通过内置模块提供的。这些 API 经过了大量优化是实现一些常见功能的官方“Bun 原生”方式。 9. bun Web API 主题APIsHTTPfetch Response Request Headers AbortController AbortSignalURLsURL URLSearchParamsWeb WorkersWorker self.postMessage structuredClone MessagePort MessageChannel BroadcastChannelStreamsReadableStream WritableStream TransformStream ByteLengthQueuingStrategy CountQueuingStrategy 及相关类BlobBlobWebSocketsWebSocket编码与解码atob btoa TextEncoder TextDecoderJSONJSON超时setTimeout clearTimeout间隔setInterval clearIntervalCryptocrypto SubtleCrypto CryptoKey调试console performanceMicrotasksqueueMicrotask错误处理reportError用户交互alert confirm prompt意在用于交互式 CLIRealmsShadowRealm事件EventTarget Event ErrorEvent CloseEvent MessageEvent 上表展示了 Bun 官方 Web API 页面中列出的部分或完整支持的 Web API。 9. bun 示例 HTTP server const server Bun.serve({port: 3000,fetch(request) {return new Response(Welcome to Bun!);}, });console.log(Listening on localhost:${server.port});Websocket server const server Bun.serve{ authToken: string; }({fetch(req, server) {// use a library to parse cookiesconst cookies parseCookies(req.headers.get(Cookie));server.upgrade(req, {data: { authToken: cookies[X-Token] },});},websocket: {// handler called when a message is receivedasync message(ws, message) {console.log(Received: ${message});const user getUserFromToken(ws.data.authToken);await db.Message.insert({message: String(message),userId: user.id,});},}, });console.log(Listening on localhost:${server.port});读写文件 const file Bun.file(import.meta.dir /package.json); // BunFileconst pkg await file.json(); // BunFile extends Blob pkg.name my-package; pkg.version 1.0.0;await Bun.write(file, JSON.stringify(pkg, null, 2));Hash 密码 const password super-secure-pa$$word;const hash await Bun.password.hash(password); // $argon2id$v19$m65536,t2,p1$tFq9AVr1bfPxQdh...const isMatch await Bun.password.verify(password, hash); // true浏览器打包 await Bun.build({entrypoints: [./index.tsx],outdir: ./build,minify: true,plugins: [/* ... */], });写测试 import { describe, expect, test, beforeAll } from bun:test;beforeAll(() {// setup tests });describe(math, () {test(addition, () {expect(2 2).toBe(4);expect(7 13).toMatchSnapshot();}); });文件系统路由 const router new Bun.FileSystemRouter({style: nextjs,dir: /path/to/pages, });const match router.match(/blog/my-cool-post); match.filePath; // /path/to/pages/blog/[slug].tsx, match.kind; // dynamic match.params; // { slug: my-cool-post }读流 const response await fetch(https://bun.sh);await Bun.readableStreamToArrayBuffer(response.body); // ArrayBuffer await Bun.readableStreamToBlob(response.body); // Blob await Bun.readableStreamToJSON(response.body); // object await Bun.readableStreamToText(response.body); // string await Bun.readableStreamToArray(response.body); // unknown[]运行 Shell 脚本 import { $ } from bun;// Run a cross-platform shell command await $echo Hello, world!;const response await fetch(https://example.com);// Pipe the response body to gzip const data await $gzip ${response}.arrayBuffer();调用 C 函数 import { dlopen, FFIType, suffix } from bun:ffi;// suffix is either dylib, so, or dll depending on the platform const path libsqlite3.${suffix};const {symbols: {sqlite3_libversion, // the function to call}, } dlopen(path, {sqlite3_libversion: {args: [], // no argumentsreturns: FFIType.cstring, // returns a string}, });console.log(SQLite 3 version: ${sqlite3_libversion()});10. npm 项目迁移 bun 注意事项 以下是 Bun 相较于 npm 在 package.json 以及配置方面的一些主要区别和迁移指南 生命周期脚本Lifecycle Scripts npm执行 package.json 中定义的 {pre|post}install 和 {pre|post}prepare 以及安装依赖时的生命周期脚本。BunBun 执行项目的生命周期脚本但出于安全考虑不会执行安装依赖的生命周期脚本。要允许特定包的生命周期脚本需要在 package.json 的 trustedDependencies 中指定。 锁文件Lockfile npm使用 package-lock.json。Bun使用二进制的 bun.lockb 锁文件。可以通过 bun install -y 生成与 Yarn v1 兼容的 yarn.lock 以方便检查。Bun 的锁文件设计用于提高性能可以通过 Git 配置来实现 bun.lockb 的可读差异输出。 配置文件bunfig.toml Bun主要用于配置 Bun 特有的行为。它是可选的Bun 也可以在没有该文件的情况下正常工作。可以在全局$HOME/.bunfig.toml 或 $XDG_CONFIG_HOME/.bunfig.toml和局部项目根目录创建 bunfig.toml 文件。局部配置会覆盖全局配置CLI 标志会覆盖 bunfig.toml 的设置。 安装Install npm有各种标志和配置以控制依赖项安装的行为。Bunbun install 的行为可以通过 bunfig.toml 的 [install] 部分进行配置。包括是否安装可选依赖、开发依赖、同级依赖是否在生产模式下运行是否设置精确版本自动安装行为的配置是否冻结锁文件干运行全局安装目录和二进制目录的配置注册表和范围的配置缓存行为和锁文件行为。 迁移指南 安装 Bun确保你已经安装了 Bun。备份你的项目在做任何改动前备份你的 package.json 和整个项目。创建 bunfig.toml根据需要在项目根目录创建一个 bunfig.toml 文件并根据你的项目特定需求配置 Bun。运行 bun install生成 bun.lockb 并安装所有依赖。修改 package.json如果需要将信任的依赖项添加到 trustedDependencies。测试项目确保所有功能正常工作并解决任何与 Bun 相关的问题。更新脚本如果项目中有脚本引用了 npm 命令将其更新为对应的 Bun 命令。适配 CI/CD更新你的持续集成和部署系统以使用 Bun。监控部署部署到生产后密切监控以捕获潜在问题。 请注意由于 Bun 还在发展中上述信息可能会随着 Bun 的更新而发生变化。在进行迁移之前建议查阅 Bun 的最新官方文档。 github原文地址
http://www.zqtcl.cn/news/141948/

相关文章:

  • 新零售型网站开发网络营销常用的工具和方法
  • 陕西省建设监理协会网站证书网站建设去哪里找客户
  • 上海网站注销吗如何在wordpress上调用百度地图
  • 网站设计与开发实例网站semseo先做哪个
  • 一个网站做3个关键词够找人建设一个网站多少钱
  • 网站群软件阿里云虚拟主机wordpress
  • 自己做个网站要多少钱温州网站开发平台
  • 北京鑫创网站建设找个网站你知道的
  • 做网站找客户电子商务网站开发与管理
  • 宝安高端网站设计怎么样qq钓鱼网站怎么制作
  • 学习教建网站公众号小程序怎么注销
  • 网站建设或网站优化排名做建筑设计网站
  • 外贸seo外贸推广外贸网站建设外贸网站建设用图片设置网站首页
  • 网站模板安装出入成都通知今天
  • wordpress网站 添加微信网站设计O2O平台佛山总代理
  • 广州网站开发定制方案网站建设应该考虑哪些方面
  • 在线网站建设培训门户类网站图片
  • 佛山乐从网站建设自媒体平台收益排行榜
  • 网站建设项目需求陕西陕煤建设集团有限公司网站
  • 鼓楼网站开发永州做网站tuantaogou
  • ui网站建设站评价文山建设5G网站
  • 深圳 网站设计公司企业网络搭建教程
  • 做网站策划遇到的问题全网营销型网站模版
  • 网站建设费属于无形资产吗广州高铁新建站在哪里
  • 网站建设平台报价深圳市房产交易中心官网
  • 注册网站网前端素材网
  • 快3网站制作 优帮云贾汪区建设局网站
  • 南昌市有帮做网站的吗网站联动
  • 英文网站建设服务合同模板网站详情页艺术字怎么做的
  • discuz仿搜索网站做网站开发用哪种语言好