由之前的网页解谜开发模板 PHP 版本(szisa/puzzle)演化而来,支持了更多自定义功能,另外增加用户登录注册和排行榜。依据此模板开发的网页解谜网站有:
- 在
stages
拷贝tpl.js
为一个新的 js 文件。文件名必须完全小写,名称与关卡地址一致。 - 填写关卡编号
stage
,下一关卡路径next
,网页title提示title
(选填),通关密码passwd
(选填)等等。 - 在
html()
中编写谜面。 - 更多参数参考 tpl.js
stage
: 目前关卡编号,用于显示在页面告知解谜者。next
: 下一页面的地址,这里分为两种:
- 通过提交密码通关,这里 URL 必须填写从
stages
目录开始的路径,无需写后缀名 ,例如:lang/ruby
; - 通过 URL 方式通关,则根据需要填写即可,建议一样写上,方便后续查看。
title
: 当需要在网页的<title>
标签填写提示语时,则设置该项;passwd
: 选中第b种解谜方式时,则需要填写该项,并且需配合模板中的密码框提交密码。 你也可以针对每个关卡编写自己的检查处理,查看check
参数;js
: 设置页面加载完成后执行的js代码,此部分代码不会直接出现在页面中,而是过script
标签引用外部文件;css
: 设置关卡的独立css代码,此部分代码不会直接出现在页面中,而是过link
标签引用外部文件;feedback
: 设置指定密码 feedback,此参数仅可以用于包含密码检查的关卡,必须为一个async
函数,return
值为显示的 feedback;head
: 插入到head
标签的代码;html
: 页面主体的代码,一般为主要谜面;last
: 插入到网页末端的代码,一般为注释。beforeRsp
: 在页面渲染前执行的代码,可以对 request 和 response 进行处理。
服务器需安装 nodejs
和 npm
。部署执行如下脚本:
npm install
初始化配置
npm run init
重新初始化数据库(会清空数据)
npm run initdb
npm run initdb -- user # 初始化指定表
启动服务:
npm start
以守护进程方式,启动服务:
forever start ./bin/www --uid puzzle
or
pm2 start -n puzzle npm -- start
- 执行
npm install
; - 使用 Visual Studio Code 运行调试(直接按下
F5
即可)。
- .vscode - VSCode 调试配置
- bin - 服务启动入口
- interface - 业务接口实现
- stages - 关卡文件
- pubilc - 静态资源
- routes - 网页路由
- script - 脚本
- views - 页面模板
- models - 数据库模型