
登录腾讯云后台,找到 Serverless 应用中心,新建应用,选择 nuxt 模板创建成功之后,在函数管理控制台下载代码或者直接在函数代码开发(建议下载到本地开发);腾讯云会自动在 nuxt 模板里面生成 serverless.yml;后面可以自己按需求配置;关于 SECRET_ID,SECRET_KEY 的相关东西也会在 env 中保存
在本地代码开发完之后全局安装 serverless
npm install -g serverless在 serverless.yml 文件所在的项目根目录,运行以下指令,将会弹出二维码,直接扫码授权进行部署
serverless deploy关于 serverless 的发布流程就这些,当然在 serverless 后台也可以配置自己的域名;serverless 的缺点就是冷启动速度,第一次访问的时候冷启动时间较长,当然这个跟 serverless 的特性相关
// nuxt.config.js 配置
export default {
// ...head
buildModules: ["@nuxtjs/pwa"],
pwa: {
icon: {
source: "/icon.png", //路径为static中的icon.png
fileName: "icon.png"
},
manifest: {
name: "我是名字",
short_name: "我是名字",
lang: "zh-CN",
theme_color: "#fff",
description: "我是描述"
}
// workbox: { //开发环境取消注释,调试pwa, 打包时注释
// dev: true
// }
}
};关于 mainfest 最后生成的 json 如下
{
"name": "我是名字",
"short_name": "我是名字缩写",
"description": "描述...",
"start_url": "/",
"display": "standalone",
"orientation": "any",
"background_color": "#ffffff",
"theme_color": "#8a00f9",
"icons": [
{
"src": "images/icons/icon_32.png",
"sizes": "32x32",
"type": "image/png"
},
{
"src": "images/icons/icon_72.png",
"sizes": "72x72",
"type": "image/png"
},
{
"src": "images/icons/icon_128.png",
"sizes": "128x128",
"type": "image/png"
},
{
"src": "images/icons/icon_144.png",
"sizes": "144x144",
"type": "image/png"
},
{
"src": "images/icons/icon_192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "images/icons/icon_256.png",
"sizes": "256x256",
"type": "image/png"
},
{
"src": "images/icons/icon_512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}mainfest.json 属性
@nuxtjs/pwa 最后会自动在生成的 html 里加上 manifest.json 链接;会自带 hash
<!-- @nuxtjs/pwa会自动在生成的 html 页面中添加以下 link 标签 -->
<link rel="manifest" href="/manifest.json" />// nuxt.config.js 配置
export default {
buildModules: ["@nuxtjs/color-mode"]
};接下来是 css|less|sass 样式的开发,在 nuxt.config.js 的 css 模块引入对应的 css|less|sass 文件
/* 初始化颜色变量 */
:root {
--color: #243746;
--color-primary: #158876;
--color-secondary: #0e2233;
--bg: #f3f5f4;
--bg-secondary: #fff;
--border-color: #ddd;
}
/* dark暗色变量 */
.dark-mode {
--color: #ebf4f1;
--color-primary: #41b38a;
--color-secondary: #fdf9f3;
--bg: #091a28;
--bg-secondary: #071521;
--border-color: #0d2538;
}
/* sepia护眼颜色变量 */
.sepia-mode {
--color: #433422;
--color-secondary: #504231;
--bg: #f1e7d0;
--bg-secondary: #eae0c9;
--border-color: #ded0bf;
}// 我自己的是在main.less维护颜色变量
export default {
css: ["@/assets/style/main.less"]
};接下来就是各模块的样式或者全局背景色,主要是根据定义的颜色变量;例如
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
background-color: var(--bg);
color: var(--color);
transition: background-color 0.3s;
}
a {
color: var(--color-primary);
}切换颜色模式,主要通过 $colorMode.preference 来控制颜色模式,$colorMode 是@nuxtjs/color-mode 帮我们注册的全局变量,可以在任何组件都可以访问
核心还是通过 html 上的 class 来控制全局变量来实现颜色模式切换
它通过以下方式注入$colorMode 帮助程序:
<template>
<div>
<h1>Color mode: {{ $colorMode.value }}</h1>
<select v-model="$colorMode.preference">
<option value="system">System</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
<option value="sepia">Sepia</option>
</select>
</div>
</template>
<style>
body {
background-color: #fff;
color: rgba(0, 0, 0, 0.8);
}
.dark-mode body {
background-color: #091a28;
color: #ebf4f1;
}
.sepia-mode body {
background-color: #f1e7d0;
color: #433422;
}
</style>