上一章节我们学会了如何admin
库的使用, 学习一些admin
库的详细配置.
回顾配置
忘记配置的同学我们再来看下基础配置, 稍后我们会对下面对配置进行扩展.
local httpd = require "httpd"
local app = httpd:new("http")
-- httpd启用Cookie扩展
app:enable_cookie()
-- httpd设置Cookie加密的密匙
app:cookie_secure("candymi")
local DB = require "DB"
local db = DB:new {
host = "localhost",
port = 3306,
username = 'root',
password = '123456789',
database = 'cfadmin',
charset = 'utf8',
max = 100,
}
db:connect()
-- 导入cf内置的admin库
local cfadmin = require "admin"
-- 注册后台页面路由
cfadmin.init_page(app, db)
-- 这个函数仅在第一次初始化数据的时候使用. 多次初始化不会产生错误, 但是会有SQL警告.
cfadmin.init_db()
app:static("static")
app:listen("", 8080)
app:run()
设置默认首页
由于上一章介绍的默认首页
只是一个演示用的静态页面, 这里我们介绍一下如何修改:
-- cfadmin.init_home("https://www.baidu.com")
-- cfadmin.init_home("/index.html")
根据上面的配置代码我们可以知道: 首页可以是一个URI
路由, 也可以是一个完整的domain
+ path
. 开发者可以根据实际情况配置.
需要知道, 这个配置不会记录到数据库之中.
设置默认语言
默认情况下, 系统显示的是简体中文
. 开发者可以使用下面的代码设置默认使用英文.
-- 设置cfadmin的区域语言, 默认为: ZH-CN
-- cfadmin.set_locale('EN-US')
增加多语言字段映射
admin
库支持双语种, 所以你可以为单个页面增加多语种支持. 利用下面的配置可以增加语言映射.
-- cfadmin.add_locale_item('ZH-CN', {
-- {'login.form.title', '这是登录页Title'},
-- {'dashboard.header.logo', '仪表盘 Logo'}
-- })
-- cfadmin.add_locale_item('EN-US', {
-- {'login.form.title', 'This is Login Page Title'},
-- {'dashboard.header.logo', 'dashboard Logo'}
-- })
静态文件
大量的静态文件对请求会有一定的延迟, 延迟越大对用户的体验就越不好. 那么如何避免呢?
我们可以考虑将
static
目录下的所有文件放置到外网的CDN
上.我们可以放置在专门的静态文件服务器上(例如:
nginx
).
无论是上述哪一种,我们都能得到一个有效的域名
与URI前缀
, 这个前缀可以用来设置admin.static
.
-- cfadmin.static("https://cdn.cfadmin.me/") -- 外网域名 + URI
-- cfadmin.static("http://localhost:9090/") -- IP地址 + URI
-- cfadmin.static("/") -- 仅URI
出现静态文件404请检查配置是否正确
或者Domain + URI
是否以/
结尾.
注意: /
结尾是必须的.
模板缓存
默认情况下, 每次渲染的模板都是从本地磁盘进行读取后再进行解析的. 每次都进行读取与解析都会加大主机处理器
与磁盘
的负担.
我们可以通过下面的配置缓存模板, 解析过后的模板不会再次读取. 大大加大了模板渲染的效率.
-- cfadmin.cached()
模板缓存能提高效率都同时也会让开发者不能再修改模板后刷新页面就能立刻看到模板修改效果.
所以, 我们不建议在非开发环境下开启. 这样在开发/调试阶段会更加简单.
Cookie 生命周期
设置浏览器Cookie生命周期.
-- cfadmin.cookie_timeout(60 * 60 * 24) -- 默认为一天
Dashboard 不显示选择语言
-- cfadmin.display_lang(false)
最后
通过上面的配置示例, 我们基本掌握了框架配置方式.
在下一章节, 我们将学习在后台开发一个简单的页面.