朝发前端工程规范
政府静态网页开发手册 · 持续更新
Frontend playbook

让好代码,
成为团队习惯。

面向政府静态网页的开发规范。左边说明统一约定,右边给出可直接参考的标准写法。

HTML 规范

使用结构完整、语义明确且格式化的 HTML。

文档基础

  • 使用 HTML5 文档声明。
  • 字符编码放在 head 的最前部;必须设置 viewport。
  • 样式表、jQuery 放到 head 中;其它脚本放在 body 末尾;部分第三方脚本可以使用 async,避免阻塞页面解析,例如 jiucuo.js。

结构与语义

  • 使用 header nav main footer 语义元素,其余使用 div。

class 约定

  • 使用 wrapper-xxx 表示外层。
  • 使用 container-1200 表示内层,数字代表页面宽度。

id 约定

  • 每个 id 不要重复。

css 约定

  • 样式尽量写入到 css 文件。

编码约定

  • 使用 2 个空格缩进,标签名和属性名使用小写,属性值统一使用双引号。
  • CMSPRO_ 标签使用大写,如 CMSPRO_DOCUMENTS CMSPRO_CHANNEL

推荐的页面骨架

  • wrapper-xxx 定义背景样式。
  • container-1200 定义页面宽度。
  • 侧边栏因为不用页面宽度,就只使用 wrapper-sidebar,不用加 container-1200
  • 主要内容中,使用 line line-xxx 表示每行。
  • 每行中,使用 xxx-left xxx-center xxx-right 表示左中右列。
index.html
<!doctype html><html lang="zh-CN">  <head>    <meta charset="UTF-8" />    <meta name="viewport" content="width=device-width, initial-scale=1.0" />    <title>网站标题</title>  </head>  <body>    <!-- 头部 -->    <header class="wrapper-header">      <div class="container-1200"></div>    </header>
    <!-- 导航栏 -->    <nav class="wrapper-nav">      <div class="container-1200">        <ul>          <li></li>        </ul>      </div>    </nav>
    <!-- 主要内容 -->    <main class="wrapper-main">      <div class="container-1200">        <!-- 主要内容 - 新闻 -->        <div class="line line-news clearfix">            <div class="news-left"></div>            <div class="news-right"></div>        </div>
        <!-- 主要内容 - 专题专栏 -->        <div class="line line-ztzl"></div>
        <!-- 主要内容 - 政民互动 -->        <div class="line line-zmhd"></div>      </div>    </main>
    <!-- 页脚 -->    <footer class="wrapper-footer">      <div class="container-1200"></div>    </footer>
    <!-- 侧边栏 -->    <div class="wrapper-sidebar">        <ul>            <li></li>        </ul>    </div>  </body></html>

常见meta标签

test.html
<!-- 必选 --><meta name="SiteName" content="<CMSPRO_WEBSITE FIELD='name' code=''></CMSPRO_WEBSITE>"><meta name="SiteDomain" content="http://jtt.sc.gov.cn/"><meta name="SiteIDCode" content="5100000085">
<!-- 栏目页必选 --><meta name="ColumnName" content="<CMSPRO_CHANNEL CODE='' FIELD='channelName'></CMSPRO_CHANNEL>"><meta name="ColumnDescription" content="<CMSPRO_CHANNEL CODE='' FIELD='channelName'></CMSPRO_CHANNEL>"><meta name="ColumnKeywords" content="<CMSPRO_CHANNEL CODE='' FIELD='channelName'></CMSPRO_CHANNEL>"><meta name="ColumnType" content="<CMSPRO_CHANNEL CODE='' FIELD='channelName'></CMSPRO_CHANNEL>">
<!-- 详情页必选 --><meta name="ArticleTitle" content="<CMSPRO_DOCUMENT FIELD='title' num='100'>标题 </CMSPRO_DOCUMENT>"><meta name="PubDate" content="<CMSPRO_DOCUMENT field='publishedTime' dateformat='yyyy-MM-dd HH:mm'></CMSPRO_DOCUMENT>"><meta name="ContentSource" content="<CMSPRO_DOCUMENT FIELD='infoSource' DOMAINMETADATANAME='稿件元数据'>信息来源</CMSPRO_DOCUMENT>">

CSS 规范

使用统一样式命名规范和文件命名规范。

基础原则

  • 使用 reset.css 清除不同浏览器差异。
  • 优先使用外部样式表,页面尽量不写 style 标签,如果要写,放到 head 中。

命名与作用域

  • class 使用小写短横线命名,名称表达组件或职责,不描述颜色、位置等易变外观。
  • 组件采用清晰的块、元素、状态结构,例如 search search_input search_button
  • 激活的块,使用 on
  • 每块组件写入注释。

响应式与兼容性

  • 在内容出现挤压或失衡的实际位置设置断点。
  • 注意常见断点:1200px 1000px 768px 425px 320px
  • 最低兼容宽度:360px?。
  • 是否可以使用 flex 布局?。

文件命名

  • reset.css:清除不同浏览器差异。
  • common.css:通用样式。包括公共头、公共尾、导航栏、侧边栏、面包屑导航等。
  • index.css:首页样式。
  • zmhd.css zwgk.css zjxx.css:频道页样式。每个样式量较大,使用单独css。
  • secondary.css:二级页面样式。每个样式量不多,可以合并到一起。包括列表页、网站地图等页面。

基础命名规则

  • 都以 search 开头,表示是同一组件。
  • 便于后续快速复制到其它网站使用,一目了然。
css/common.css
@charset "UTF-8";/* 通用样式 */
.search {} // 搜索功能
.search .search_inner {} /* 搜索子级 */
.search .search_input {} /* 搜索框 */
.search .search_button {} /* 搜索按钮 */.search .search_button a {} /* 搜索子元素 */
/* 响应式 */@media screen and (max-width: 1200px){}
css/secondary.css
@charset "UTF-8";/* 二级页面样式 */
/* 列表页 */...
/* 图片列表 */...
/* 网站地图 */...

JavaScript 与 jQuery 规范

以 jQuery 为默认方案,配合原生 JavaScript。

语言与代码风格

  • 新代码默认使用 jQuery 保证兼容性。
  • 每个模板仅引入一个 jQuery 文件。在 head 中引入,以避免部分代码在 main 中无法执行。
  • 尽量使用 var,以低版本浏览器保证兼容性。
  • 变量和函数使用 camelCase。如:getYjzjList、encryptJSON
  • 常量使用 UPPER_SNAKE_CASE。如:HD_INTERFACE_URL、HD_PAGE_URL
  • 统一使用分号和单引号。
  • 函数、不容易理解的地方加上注释。

常用约定

  • common.js:公共 js。
  • index.js:首页 js。
  • zmhd.js zwgk.js:频道页 js。
  • hd_common.js aes.js:互动功能。
  • jianfanti.js:简繁体。
  • alert.min.js:外链弹窗。
  • jquery.min.js:jQuery。文件名中不带版本,避免扫描出漏洞。使用 3.x 版本。
  • jquery.SuperSlide.js:superslide。文件名中不带版本,避免扫描出漏洞。使用 2.3.1 版本。

jQuery 示例

js/common.js
// 通用 js
$(function () {  // 页脚友情链接  $('.link-list-item').hover(    function () {      $(this).addClass('on').siblings().removeClass('on');      $(this).find('.down-box').toggle();      $(this).siblings().find('.down-box').hide();    },    function () {      $(this).removeClass('on');      $(this).find('.down-box').hide();    }  );
  // 页头导航栏高亮  highlightChannel('.nav li', '.breadcrumb');
  // 侧边两个导航条随高度滚动  initialSidebarScroll();});
/** * 切换栏目 * @param triggerEl 鼠标 click 或 hover 的标题元素 * @param targetEl 需要展示的内容元素 * @param method 切换方式,'click' 或 'hover',默认 'hover' * @param callback 回调函数 */function switchPanel(triggerEl, targetEl, method, callback) {...}

文件结构规范

统一文件、资源命名与引用方式。

目录职责

  • 常见文件夹名:css images js ztzl 2026
  • 改版文件夹使用年份,不要月份和日期:2026
  • HTML 模板放在项目根目录或改版年份目录。
  • 专题资源文件放到 ztzl 文件夹下 images css js 中。

文件命名

  • 文件和目录统一使用小写字母、数字与短横线,不使用空格、中文和特殊符号。
  • 专题资源前加 zt_
模板命名
index.html 首页header.html 公共头footer.html 公共尾
list.html 通用列表页list_img.html 通用图片列表页
wzdt.html 网站地图
zt_rszp.html 专题_人事招聘
资源命名
logo.png
// 侧边栏图片sidebar_icon1.pngsidebar_icon2.png
// 人事招聘专题图片rszp_title.pngrszp_bg.png

资源目录示例

  • html 模板放根目录或改版年份目录
  • 专题资源(image、css、js)放到 ztzl 下
  • 改版资源(image、css、js、html)放到年份文件夹下
资源目录
根目录/├─ index.html├─ zmhd.html├─ header.html├─ footer.html├─ css/│  ├─ index.css│  └─ reset.css├─ images/│  ├─ logo.png│  └─ sidebar_icon1.png├─ js/│  ├─ jQuery.min.js│  └─ common.js├─ 2026/│  ├─ css/│  ├─ js/│  └─ images/└─ ztzl/   ├─ css/   │  ├─ ztzl.css   │  └─ ztzl_xxx.css   ├─ js/   └─ images/      ├─ zfxxgk_title.png      └─ jczwgk_icon1.png

资源加载

index.html
<!-- css --><link rel="stylesheet" href="css/common.css">
<!-- js --><script src="js/jquery.min.js"></script><script src="js/index.js"></script><script id="_jiucuo_" sitecode="5101220004" src="https://zfwzgl.www.gov.cn/exposure/jiucuo.js" async></script> <!-- async 异步加载 -->
<!-- image --><img src="images/logo.png" />

编码小技巧

汇总静态网页开发中常用且易复用的小技巧。

后台使用

  • 大改动前,先下载模板备份。
  • 视频文件尽量传到稿件中,不要传到文件目录,避免备份模板时体积过大下载慢。
  • 后台建栏目
    • 辅助栏目:友情链接、网站地图、测试栏目等。
    • 公共栏目:各公共模板。
  • 站点配置中,站点域名最后不加 /
  • 删除栏目前,撤销稿件,撤销栏目。

模板使用

  • 检查模板 meta 标签。
  • 详情页
    • 无论是否展示访问量,都请求。
    • 没有分享功能,可先预留位置。

HTML 小技巧

  • 政务服务外链 a 标签补充 rel="noopener noreferrer"

其它参考

模板用法

模板用法
<!-- 站点 --><CMSPRO_WEBSITE FIELD="url"></CMSPRO_WEBSITE>
<!-- 栏目 --><CMSPRO_CHANNEL CODE="" FIELD="url"></CMSPRO_CHANNEL><CMSPRO_CHANNEL CODE="" FIELD="channelName"></CMSPRO_CHANNEL><CMSPRO_CHANNEL CODE="" FIELD="memo">栏目描述</CMSPRO_CHANNEL><CMSPRO_CHANNEL CODE="" FIELD="codeName">栏目code</CMSPRO_CHANNEL>
<!-- 文章 --><CMSPRO_DOCUMENTS CHANNELCODE="" DOCUMENTTYPE="0|1|2|3|8|9" NUM="5" STARTPOS="0"></CMSPRO_DOCUMENTS><CMSPRO_DOCUMENTS CHANNELCODE="" DOCUMENTTYPE="0|1|2|3|8|9" NUM="1000" STARTPOS="0" PAGENAVIGATIONID="page-div" PAGENAVIGATIONCLASS="" PAGESIZE="15"></CMSPRO_DOCUMENTS>(DOCUMENTTYPE中:0代表普通稿件、123未知、8代表图片新闻、9代表头条新闻)(SITECODE="chengdu" 跨站点读取数据)(ORDER="PUBLISHED_TIME DESC" 文章列表排序字段)(ORDER="PUBLISHED_TIME ASC" 文章列表排序字段 倒序)<CMSPRO_APPENDIXS MODE="IMG" NUM="1" STARTPOS="0"></CMSPRO_APPENDIXS><CMSPRO_APPENDIX FIELD='path'></CMSPRO_APPENDIX><CMSPRO_DOCUMENT FIELD='url'></CMSPRO_DOCUMENT><CMSPRO_DOCUMENT FIELD="title">文章标题</CMSPRO_DOCUMENT><CMSPRO_DOCUMENT FIELD="content">文章内容</CMSPRO_DOCUMENT><CMSPRO_DOCUMENT FIELD="publishedTime" DATEFORMAT="yyyy-MM-dd">时间</CMSPRO_DOCUMENT>
<!-- 子栏目 --><CMSPRO_CHANNELS CODE="" CHILDLEVEL="1" CHILDTYPE="0|1|2|3" NUM="" STARTPOS="0"></CMSPRO_CHANNELS>(CHILDTYPE中:0普通栏目,1未知,2外链栏目,3未知)<CMSPRO_CHANNEL CODE='' FIELD='url'></CMSPRO_CHANNEL><CMSPRO_CHANNEL CODE='' FIELD="channelName"></CMSPRO_CHANNEL>
<!-- 子栏目logo --><img src="<CMSPRO_CHANNEL LOGOINDEX='0'></CMSPRO_CHANNEL>" alt=""/><img src="<CMSPRO_CHANNEL CODE='' LOGOINDEX='0'></CMSPRO_CHANNEL>" alt=""/>
<!-- 关联稿件 -->(MODE参数:USER<用户手工设置的关联稿件>、KEYWORDS<提取包含当前稿件中设置的关键词的所有稿件>、ALL<前两者结合><CMSPRO_RELDOCUMENTS STARTPOS='0' NUM='5' MODE='USER'>    <li>        <CMSPRO_DOCUMENT field='subTitle' autolink='true' target='_blank' num="100"></CMSPRO_DOCUMENT>    </li></CMSPRO_RELDOCUMENTS>
<!-- 面包屑导航 --><CMSPRO_LOCATION LINK="&nbsp;&gt;&nbsp;" SELFONLY="false" AUTOLINK="true" TARGET="_blank" LINKEXTRA="" HOMEPAGEDESC="首页">当前位置</CMSPRO_LOCATION>
<!-- 来源 --><CMSPRO_DOCUMENT FIELD="source" DOMAINMETADATANAME="默认元数据集">信息来源</CMSPRO_DOCUMENT>
<!-- 公共头和公共尾 --><!--header--><!--#include virtual="<CMSPRO_CHANNEL CODE='c104734' FIELD='url'></CMSPRO_CHANNEL>"--><!--header end-->
<!--footer--><!--#include virtual="<CMSPRO_CHANNEL CODE='c104735' FIELD='url'></CMSPRO_CHANNEL>"--><!--footer end-->
<!-- 自动产生 a 标签 --><CMSPRO_CHANNEL CODE="c103022" AUTOLINK="true" LINKALT="true" target="_blank" FIELD="channelName">政府采购</CMSPRO_CHANNEL><CMSPRO_DOCUMENT FIELD="title" NUM="22" AUTOLINK="true" LINKALT="true" LINKALTTEXT="">标题</CMSPRO_DOCUMENT>
<!-- 循环的时候自动编号 --><CMSPRO_ROWNO>当前记录序号</CMSPRO_ROWNO>
朝发前端工程规范 · 用共识降低协作成本编辑 MDX,即可更新内容