`不触发form提交。这种bug测试时不容易发现,上线后客服电话会被打爆。 后端我倾向用Python的Flask,轻。一个路由返回目的地列表,一个路由处理订单POST,再接个支付SDK。数据库用SQLite就够,旅游网站并发不高,真做大了再换PostgreSQL。有个坑:订单表的时间字段一定要存UTC,别存本地时间。我朋友那个网站存的是服务器本地时间,后来服务器迁移到不同时区,所有订单时间全乱了。用户投诉说"我明明昨天订的,怎么显示前天"。
最后说部署。别买虚拟主机,直接上云服务器最便宜的实例。Nginx配静态文件,Gunicorn跑Flask应用。HTTPS证书用Let's Encrypt免费签,三个月自动续期。我见过有人为了省事把数据库文件放在网站根目录,结果`/data.db`直接能被下载——里面存着所有用户的手机号和身份证号。这种低级错误每年都能扫出来几百个。
代码写完了,测试的时候别只点鼠标。用键盘Tab键走一遍,看看焦点顺序对不对。把浏览器窗口缩到手机宽度,看看导航栏会不会挡住内容。这些事花不了半小时,但能拦住大部分投诉。旅游网站的用户往往在手机上一只手操作,另一只手可能在拉行李箱。代码得为这种场景写,不是为演示写。