ST 标注
独立 JavaScript 类 / 组件,作为 ES 模块编写并运入 每个模块有两种花香:
- 无害环境管理 (单位:千美元)
*.esm.min.js)——用于import(npm捆绑工,<script type="module">) (中文(简体) ). 一个模块 采用另一种方式进口其无害环境管理文件,而不是将其内嵌(app/datepicker→../mask.esm.min.js, (中文(简体) ),app/form→../core.esm.min.js),因此,一个同时导入每类捆绑一次和Mask.find()看到摘枣者设置的口罩. - IIFE / 全球 (单位:千美元)
*.min.js)——为平庸的CDN<script defer>(对a global 以模块命名). 自成一体:已导入模块内含.
| 模块 | 全球/ 要素 | 页:1 |
|---|---|---|
modal | window.Modal | 摩多尔窗. |
typograf | window.Typograf | Неразрывные:предлоги也. |
cookie | window.Cookie | Cookie帮助者(JSON for no-strings). |
core | window.Core | 水电费(merge, (中文(简体) ), getRandomChars, (中文(简体) ), uuid, (中文(简体) ), plural, (中文(简体) ), escape, (中文(简体) ), copy, (中文(简体) ), download, (中文(简体) ), fetch) (中文(简体) ). |
observer | window.Observer | 滚动动画 : [state], (中文(简体) ), --progress交错 交叉. |
toggle | window.Toggle | 状态切换器(accordions, switch-menus). |
select | window.Select | 自定义 <select> 倒下(呼声,多声,徘徊). |
mask | window.Mask | 输入口罩(телефон,дата,карта. |
uploader | window.Uploader | 文件上传器. |
validator | window.Validator | 实地鉴定([state], (中文(简体) ), setCustomValidity,"钩". |
st_button_widget | window.st_button_widget | 正在浮动按钮部件 . |
st_links_widget | window.st_links_widget | 链接部件 . |
loader | window.Loader | Ajax 列表加载器(卡: подгрузка/фильтр/сортировка)通过 Core.fetch。 。 。 . |
app | window.App, (中文(简体) ), <st-app> | 网络组件 - 登记册 <st-app> 装入量. |
route | window.Route | URL 反应; SPA 模式 (history 编号 : hash) (中文(简体) ). |
app/form | window.Form | 格式应用程序 配置对象 - 登记在 App.create(form)· ; app 未捆绑. |
app/datepicker | window.Datepicker | 日历应用 配置对象 (装潢) ДД.ММ.ГГГГ 字段,范围, min编号 :max)—— App.create(datepicker); 捆绑 mask没有 app。 。 。 . |
shape | window.Shape | 来自 Figma 路径的形状( 角保持其大小, 边缘拉伸): SVG 背景 + clip-path,每个断点变体. |
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 docs/src/<module>/index.js.md时
docs/src/app/index.js.md: директивы, watch() (单位:千美元)
числе watch(() => выражение, cb) для,вычисляемого, nextTick(), 翻译:
через :attr说吧 说吧.
发展
npm install # installs esbuild, builds dist/ via the prepare script
npm run build # compile src/ → dist/*.min.js (ESM + IIFE)
node scripts/build.mjs --watch # rebuild on change
来源布局 —— 每个 src/**/index.js 是一个捆绑; 其文件夹路径变为
输出名称 :
src/
index.js # aggregate barrel (source only, not built into dist/)
modal/index.js # → dist/modal.esm.min.js + dist/modal.min.js
app/index.js # → dist/app.{esm.min,min}.js
app/form/index.js # → dist/app/form.{esm.min,min}.js
…
公约 (单位:千美元)scripts/build.mjs 依赖这些 — 没有脚本编辑可扩展 :
- 一个带有
index.js是一个 捆绑; 丢出src/<name>/index.js这是 自动输入dist/<name>.esm.min.js(ESM)和dist/<name>.min.js(IIFE全局,默认导出曝光为window.<ClassName>,比如说.window.Modal) (中文(简体) ). - 名称起始的文件或文件夹
_是共享内容(部分), 通过import从不靠自己建设.
dist/ 生成并被 git-ignored 。 这是建立在 npm install (单位:千美元)prepare, (中文(简体) ),
打开 npm publish (单位:千美元)prepack),并在CI中附加释放文物.
每艘装有源图的捆船(*.min.js.map,来源嵌入). 建立无害环境管理
链接它通过 //# sourceMappingURL,所以DevTools自动取出. 二、建 议
不含链接注释:它们往往被压缩成一个全站式捆绑,其中:
相对链接为404——附 .map 在 DevTools 中,调试时用手进行.
尚未查明的无害环境管理来源也作为出版物公布
为: import Modal from '@cat-of-summer/st-script/src/modal/index.js'。 。 。 .
A. 通过npm使用
##########npm,##################################################################################################################################################################################################################################################
npm install @cat-of-summer/st-script
Модули:
import Modal from '@cat-of-summer/st-script/modal';
import Cookie from '@cat-of-summer/st-script/cookie';
import Typograf from '@cat-of-summer/st-script/typograf';
const modal = new Modal({ content: '#promo', overlay: true });
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}这太疯狂了 dist/ нет. {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
import { Modal, Cookie, App } from '@cat-of-summer/st-script/src/index.js'。 。 。 .
网络组件 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
import App from '@cat-of-summer/st-script/app';
import formConfig from '@cat-of-summer/st-script/app/form';
App.create(formConfig); // теперь работает <st-app app="form">
B. 通过CDN的使用
<script defer src="https://cdn.jsdelivr.net/npm/@cat-of-summer/st-script/dist/modal.min.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/@cat-of-summer/st-script/dist/app.min.js"></script>
释放
Релиз тегом vX.Y.Z{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢
git tag v1.1.0
git push origin v1.1.0
{\fn黑体\fs20\shad2\2aH82\3aH20\4aH33\fscx95\3cH592001\be1}你觉得呢? Поле version 用户 package.json {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得怎么样? – Актуальная – npm view @cat-of-summer/st-script version。 。 。 .
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 .github/workflows/ci-cd.yml (工作流程)
cat-of-summer/git_toolkit) (中文(简体) ).
测试
node tests/core.test.mjs # и остальные tests/*.test.mjs без DOM
npm run build # браузерным тестам и tests/build.test.mjs нужен dist/
node tests/build.test.mjs # ESM импортирует соседние модули, IIFE самодостаточна
node tests/browser.test.mjs # App, Modal, Uploader, Core, Cookie, Route — нужен Playwright с Chromium
Браузерные ??????????????
docker run --rm -v "$PWD:/repo" -e PLAYWRIGHT_FROM=/path/to/node_modules/ --entrypoint node <playwright-image> /repo/tests/browser.test.mjs
PLAYWRIGHT_FROM - каталог из которого пакет playwright、 если стоит не в
репозитории.
实例
见 examples/ 用于可运行的 HTML 页面. examples/cdn-demo.html 练习
无害环境管理和IIFE/全球 dist/。 。 。 .