Install
openclaw skills install legacy-web-standard针对 JavaScript + jQuery + HTML/CSS 传统前端项目的开发与维护规范。当用户在非框架项目中工作,涉及 jQuery、原生 JS、传统多页面应用(MPA)、模板引擎渲染页面、或维护遗留代码时自动激活。
openclaw skills install legacy-web-standard适用于未使用现代框架(Vue / React / Angular)的传统前端项目,包括 jQuery 多页面应用、服务端模板渲染项目(JSP / Thymeleaf / PHP / Django Template / EJS / Handlebars 等)以及需要长期维护的遗留系统。
var / let / const 取决于项目已有风格,保持统一var App = App || {};
App.UserModule = (function($) {
'use strict';
var config = {
apiBase: '/api/v1'
};
function init() {
bindEvents();
loadData();
}
function bindEvents() {
$(document).on('click', '.js-submit-btn', handleSubmit);
}
function handleSubmit(e) {
e.preventDefault();
// ...
}
return { init: init };
})(jQuery);
$(document).on('event', '.selector', handler))js- 前缀的 class(如 .js-delete-btn),与样式 class 分离onclick、onchange 等事件属性var $list = $('.item-list'))DocumentFragment 或拼接 HTML 字符串后一次性插入function fetchUserList(params) {
return $.ajax({
url: config.apiBase + '/users',
method: 'GET',
data: params,
dataType: 'json'
}).done(function(res) {
if (res.code === 0) {
renderList(res.data);
} else {
showError(res.message);
}
}).fail(function(xhr) {
showError('网络错误,请稍后重试');
}).always(function() {
hideLoading();
});
}
$('#user-list'))$container.find('.item') 优于 $('.item'))避免:
$('body').on('click', handler) — 事件范围过大$(document).ready 外直接操作 DOM$() 包装同一个元素<nav>、<main>、<section>、<article> 替代纯 <div><label>alt 属性<font>、<center>、<marquee>)data-* 前缀!important,除非覆盖第三方库样式且无其他选择var(--color-primary))管理主题值(如项目支持)传统项目是 XSS 的高发区,必须严格检查:
innerHTML / .html() 直接插入用户输入.text() 代替 .html() 展示纯文本内容// 错误:XSS 风险
$('.username').html(userData.name);
// 正确:使用 .text() 转义
$('.username').text(userData.name);
// 正确:需要 HTML 时手动转义
function escapeHtml(str) {
var div = document.createElement('div');
div.appendChild(document.createTextNode(str));
return div.innerHTML;
}
$('.comment').html('<p>' + escapeHtml(userData.comment) + '</p>');
遵循项目已有约定。典型结构:
project/
├── css/
│ ├── common.css # 全局样式
│ └── pages/
│ └── user-list.css # 页面级样式
├── js/
│ ├── lib/ # 第三方库
│ │ ├── jquery.min.js
│ │ └── ...
│ ├── common/ # 公共模块
│ │ ├── utils.js
│ │ ├── ajax.js
│ │ └── constants.js
│ └── pages/ # 页面级脚本
│ └── user-list.js
├── images/
└── pages/ # HTML 页面(如非模板引擎)
在维护遗留项目时,可以在不影响整体架构的前提下渐进引入:
fetch API 替代 $.ajax(如不需要支持 IE)但不要在一次改动中同时引入多项改进。每次聚焦一个点,确保不破坏现有功能。