- 后端
- 前端
- 开发工具
- 移动开发
【免费下载链接】meteor
Meteor, the JavaScript App Platform
本教程是 Meteor 3 官方 Blaze 系列教程的第一步,面向想要用 Meteor 与 Blaze 快速搭建现代 JavaScript 应用的开发者。你将学会通过一条命令创建 Blaze 项目、理解client/server目录结构、编写 Spacebars 模板与 helper 渲染数据、为移动端优化视口,并开启热模块替换(HMR)与浏览器内错误提示的开发体验。读完本节,你将拥有一套可运行、可继续扩展的 Blaze To-do 应用骨架。
1. 安装 Meteor
在创建项目之前,需要先在你的机器上安装 Meteor。官方提供了面向不同操作系统的 安装指南,Meteor 会一并安装其所需的 Node.js 等运行环境。安装完成后,在终端中执行meteor --version即可验证是否就绪。
2. 使用meteor create --blaze创建项目
2.1 一条命令生成完整骨架
创建 Blaze 项目最简单的方式是使用meteor create命令并传入--blaze选项和项目名:
meteor create --blaze simple-todos-blazeMeteor 会自动生成项目所需的全部文件。从当前仓库的 CLI 源码可以看到,blaze是meteor create内置的骨架之一(tools/cli/commands.js 中列出了AVAILABLE_SKELETONS与说明 "To create an app using Blaze"),其生成的模板骨架位于 tools/static-assets/skel-blaze 目录。
使用--blaze选项时,Meteor 会生成一个基于Blaze(视图层)与Rspack(打包器)的项目,这也是本教程采用的方式。Rspack 是 Meteor 3.4+ 的默认打包方案,它提升了开发速度、支持更多构建特性,并让你对打包体积与配置拥有更好的控制力(可参考 Rspack bundler 集成说明)。
说明:Meteor 同时提供基于 Rspack 与基于 Meteor 旧版打包器的最终示例应用,本教程跟随 Rspack 版本,最终产物一致;旧版打包器版本仅面向偏好传统构建链的开发者。
2.2 认识生成的目录结构
创建完成后,Meteor 为你生成了一整套标准项目布局:
client/目录负责客户端(Web)侧代码。例如client/main.html是 HTML 入口,Meteor 会在这里把你的应用主组件渲染进页面;client/main.js是客户端模块入口。server/目录负责服务端(Node.js)侧代码。server/main.js是服务端模块入口,也是初始化 MongoDB 数据的好位置。imports/目录(需要你后续自行创建)用于存放业务模块,Blaze 代码将集中放在imports/ui中。- 根目录还有
package.json、rspack.config.js、tests/等文件。
以仓库中的 Blaze 骨架为例,skel-blaze/package.json 的meteor字段声明了mainModule.client与mainModule.server分别指向client/main.js和server/main.js,并内置了@meteorjs/rspack、@rspack/core等打包依赖;skel-blaze/client/main.html 展示了<head>、<body>与<template>三种顶级标签的组合方式。
关于数据库:你不需要手动安装 MongoDB,Meteor 自带嵌入式版本,开箱即用。
2.3 启动应用
进入项目根目录,直接运行:
meteorMeteor 会启动开发服务器并持续监听你的改动,让应用与代码始终保持同步。默认访问地址为http://localhost:3000/。
3. 创建任务组件(Task Component)
3.1 清空默认入口 HTML
先用下面的代码替换client/main.html的<body>,只保留<head>标签:
<head> <title>Simple todo</title> </head>3.2 创建imports/ui目录与模板文件
在simple-todos-blaze项目内新建imports目录,再在imports下创建ui目录,并在其中新增App.html文件,内容如下:
<body> {{> mainContainer }} </body> <template name="mainContainer"> <div class="container"> <header> <h1>Todo List</h1> </header> <ul> {{#each tasks}} {{> task}} {{/each}} </ul> </div> </template> <template name="task"> <li>{{text}}</li> </template>这里我们创建了两个模板:
mainContainer:渲染在应用的<body>中,展示标题与任务列表,并通过{{#each tasks}}遍历任务、用{{> task}}把每项交给task模板渲染;task:接收单个任务数据,用{{text}}显示任务的文本属性。
接下来需要为页面提供一些示例数据。
4. 创建示例任务数据
4.1 配置客户端入口
在ui目录中新建App.js。然后打开client/main.js,删除原有内容,替换为下面一行,将新的模块导入入口:
import '../imports/ui/App.js';4.2 用 helper 定义任务数组
因为目前还没有连接服务器与数据库,我们先在App.js中定义示例数据,用于渲染任务列表:
import { Template } from 'meteor/templating'; import './App.html'; Template.mainContainer.helpers({ tasks: [ { text: 'This is task 1' }, { text: 'This is task 2' }, { text: 'This is task 3' }, ], });代码逻辑说明:
import { Template } from 'meteor/templating';引入 Blaze 的模板 API;import './App.html';把上一步创建的App.html模板编译结果导入进来;Template.mainContainer.helpers({ tasks: [...] })为mainContainer模板注册名为tasks的 helper,返回任务数组。
应用启动时,客户端入口client/main.js导入imports/ui/App.js,后者又导入App.html,从而把模板与数据连接起来。
4.3 查看运行结果
此时 Meteor 应已运行在 3000 端口,在浏览器中访问http://localhost:3000/即可看到包含三条任务的列表。如果 Meteor 尚未启动,回到终端、进入项目根目录执行meteor并按回车即可。
5. 理解渲染机制:HTML、Template 与 Spacebars
5.1 三种顶级标签
Meteor 解析 HTML 文件时会识别三种顶级标签:<head>、<body>和<template>。
<head>中的内容会被加入发送给客户端的 HTML 头部,与普通 HTML 行为一致;<body>中的内容被加入 HTML 正文;<template>中的内容会被编译为 Meteor 模板,既可以在 HTML 中用{{> templateName}}引入,也可以在 JavaScript 中用Template.templateName引用。
此外,<body>段落在 JavaScript 中对应Template.body,可以把它看作一个特殊的"父模板",用来包含其他子模板。
5.2 Spacebars 模板语法
HTML 文件中的全部代码都会由 Meteor 的 Spacebars 编译器编译。Spacebars 使用双花括号包裹的语句,如{{#each}}、{{#if}},为视图加入逻辑与数据绑定能力。
5.3 helper 与数据流
通过 JavaScript 定义 helper 可以向模板传入数据。在上面的代码中,我们在Template.mainContainer上定义了名为tasks的 helper 并返回数组;模板中{{#each tasks}}遍历数组并为每个元素插入一个task模板;在#each块内部,{{text}}显示当前数组项的text属性。
6. 移动端显示优化
6.1 模拟移动设备
在浏览器(以 Chrome 为例)中右键点击应用页面,选择"检查"(Inspect)打开 Dev Tools,然后点击工具栏中的设备切换图标(手机/平板图标),选择你想模拟的手机型号即可预览移动端效果。
也可以直接用手机访问:在手机浏览器中输入你电脑的局域网 IP 即可。 Unix 系统查看本机 IP:
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'Windows 命令行中查看:
ipconfig | findstr "IPv4 Address"
6.2 添加 viewport meta 标签
未适配时,页面内容在移动设备上会显示得很小,因为没有针对移动设备调整视口(viewport)。在client/main.html的<head>标签内、<title>之后加入以下 meta 标签即可修复:
... <meta charset="utf-8"/> <meta http-equiv="x-ua-compatible" content="ie=edge"/> <meta name="viewport" content="width=device-width, height=device-height, viewport-fit=cover, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" /> <meta name="mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-capable" content="yes"/> ...各标签的作用:
viewport:将视口宽度设置为设备宽度、禁止用户缩放,让页面按移动端比例渲染;mobile-web-app-capable与apple-mobile-web-app-capable:声明应用可全屏运行,提供更接近原生 App 的体验。
添加后刷新页面,移动端展示即恢复正常比例。
7. 热模块替换(HMR)与错误提示
7.1 HMR 默认开启
默认情况下,使用 Blaze 的 Meteor 项目会自动加入hot-module-replacement包。该包会在重新构建时更新运行中的应用中已修改的 JavaScript 模块,大幅缩短开发反馈周期——你甚至可以在构建完成前看到更新生效,同时不会丢失应用状态:代码被更新,而状态保持不变。
从仓库源码看,该包被标记为debugOnly(仅开发环境生效),其职责描述为 "Update code in development without reloading the page"(见 packages/hot-module-replacement/package.js)。
7.2 添加 dev-error-overlay
为了让构建/运行错误直接显示在浏览器中(而非仅停留在控制台),建议再添加dev-error-overlay包:
meteor add dev-error-overlay该包在仓库中同样以开发环境专用包(devOnly)存在,功能描述为 "Show build errors in client when using HMR"(见 packages/dev-error-overlay/package.js)。安装后,你可以故意制造一些错误,观察错误信息直接呈现在浏览器页面上。
8. 小结与下一步
至此,你已经完成了 Meteor 3 + Blaze 应用的创建、目录结构认知、模板与 helper 数据渲染、移动端适配以及 HMR 开发体验配置。项目骨架中的App.html与App.js将成为你 To-do 应用的根组件,后续步骤会在此基础上接入 MongoDB 集合、表单事件、数据更新删除、样式、筛选、用户账户与部署。
继续本系列教程的下一节:2. 集合与数据库(Collections),开始使用 MongoDB 持久化存储任务数据。
- 后端
- 前端
- 开发工具
- 移动开发
【免费下载链接】meteor
Meteor, the JavaScript App Platform
相关推荐
Treelite终极指南:5分钟掌握决策树模型转换与跨框架部署
Treelite终极指南:5分钟掌握决策树模型转换与跨框架部署 Treelite是一款专为机器学习开发者设计的 决策树模型转换神器 ,它提供了统一的模型交换格式
后端前端开发工具移动开发Meteor 3 应用部署实战:使用 Galaxy 从零发布你的 Blaze 应用
Meteor 3 应用部署实战:使用 Galaxy 从零发布你的 Blaze 应用 本篇教程面向使用 Blaze 完成 Meteor 3 应用开发的开发者,完整
后端前端开发工具移动开发Moon.js快速开始:从零构建你的第一个响应式应用
Moon.js快速开始:从零构建你的第一个响应式应用 🌙 Moon.js 是一个极简且快速的函数式用户界面库,专为构建响应式应用而设计。作为轻量级JavaSc
前端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考