找到
22
篇与
搭建网站
相关的结果
-
在windows安装node.js教程(三种方法) 今天教大家如何在windows上安装node.js,分享3种安装node.js的方法,新人小白也可以学会 nodejs简介图片 Node.js 是一个基于JavaScript运行时建立的一个平台,总结一下就是就是运行在服务端的JavaScript 官网安装程序(推荐) https://nodejs.org/zh-cn node-v24.11.1-win-x64.zip 下载地址:https://wwbfa.lanzn.com/iUZfB3d6z4pc 提取码: nvm-windows(适合有多版本需求的用户) nvm-windows下载地址 下载地址:https://github.com/coreybutler/nvm-windows/releases 提取码: 使用Chocolatey安装(非官方,由社区维护) 下载并安装 Chocolatey powershell -c "irm https://community.chocolatey.org/install.ps1|iex"安装node.js choco install nodejs --version="24.11.1"验证 Node.js 版本 node -v下载并安装 pnpm corepack enable pnpm验证 pnpm 版本 pnpm -v -
Mizuki静态博客实现自动化更新部署 上期文章我们讲了Mizuki二次元静态博客模板如何部署教程,你可能会觉得每次更新都需要手动构建有点麻烦,今天教大家如何实现自动化更新部署,部分代码由ai提供 主题效果图图片 最佳方案 - 强烈建议部署在Vercel上,对生产分支(通常是名为“main”的分支)所做的任何更改都将自动被部署为 生产部署 方案一:Vercel部署(推荐) 1. 访问 vercel.com → 用 GitHub 登录 2. 点击 "New Project" 3. 选择你的博客仓库 4. 点击 "Deploy" 5. 完成!以后 git push 就自动部署方案二:手动触发自动化部署 #!/bin/bash # build-and-deploy.sh echo "开始构建 Mizuki 博客..." pnpm install pnpm build echo "构建完成!" echo "dist 文件夹位置:$(pwd)/dist" # 根据你的部署方式取消注释相应部分 # FTP 部署(需要安装 lftp) # lftp -u username,password -e "mirror -R dist /remote/path" ftp.example.com # SCP 部署 # scp -r dist/* user@server:/path/to/website/ # AWS S3 部署(需要安装 AWS CLI) # aws s3 sync dist s3://your-bucket-name --delete echo "部署脚本执行完成!"使用方法: chmod +x build-and-deploy.sh ./build-and-deploy.sh -
Mizuki二次元静态博客模板部署教程 Mizuki静态博客图片 今天分享一个好看的静态博客模板,它就是Mizuki主题,一个基于Astro的现代化静态博客模板,可以满足绝大多数的需求 使用前必看 在开始使用Mizuki主题之前,需要确保系统满足以下要求: Node.js>=20 pnpm>=9 Git Mizuki主题图片 GitHub - matsuzaka-yuki/Mizuki 下载地址:https://github.com/matsuzaka-yuki/Mizuki 提取码: node.js安装 下载并安装 nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash如果你使用的是国内服务器,可以使用这个命令安装 curl -o- https://gitee.com/mirrors/nvm/raw/v0.40.1/install.sh | bash重启 shell \. "$HOME/.nvm/nvm.sh"下载并安装node.jsv24.11.1 nvm install 24验证Node.js版本 node -v验证npm版本 npm -v 如果您尚未安装 pnpm,可以通过npm安装: npm install -g pnpm验证pnpm版本 pnpm -v以上分享的是Linux安装node.js的方法,如果使用的是windows可以前往node.js官网查看具体安装方法 windows版nodejs教程 下载地址:https://nodejs.org/zh-cn/download 提取码: git安装 Ubuntu、Debian安装 sudo apt-get install git-coreCentOS安装 sudo yum install git-corewindows安装 Windows版Git下载 下载地址:https://git-scm.com/download/win 提取码: 如果没有你使用的操作系统可以访问Git官网下载并安装适合您操作系统的git版本。 环境都准备好了之后,现在来部署Mizuki 将克隆Mizuki项目到本地 git clone https://github.com/matsuzaka-yuki/mizuki.git如果你使用的是国内服务器下载慢的话,可以使用这个命令下载 git clone https://gh.llkk.cc/https://github.com/matsuzaka-yuki/mizuki.git然后cd到当前目录 cd Mizuki下一步使用pnpm安装项目依赖: pnpm install在启动项目之前,您需要根据自己的需求进行配置,编辑src/config.ts文件来自定义博客设置,更新站点信息、主题颜色、横幅图片和社交链接等等配置 运行以下命令启动开发服务器 pnpm dev完成之后在浏览器访问http://localhost:4321查看你的博客 运行下面这个代码将网站打包成静态文件,会生成并保存在dist目录里 pnpm build生成的dist目录可以部署到您自己的服务器上,也可以放置在github或者vercel,虚拟主机也可以 该项目是没有后端的,无需数据库,纯前端项目,所以需要手动编辑配置文件 建议部署在Vercel上,可以实现所做的任何更改都将自动被部署,更方便快捷 使用教程 - 如果你部署完不会使用,可以去https://docs.mizuki.mysqil.com查看具体使用教程 以上就是Mizuki静态博客部署的完整教程,感谢大家的支持 -
[typecho主题开发]typecho常用的语法和变量 准备开发一个typecho的主题的第一步,先了解typecho常用的语法和变量,开发typecho主题之前需要有前端三件套基础,会点简单的PHP,开发typecho就是这么简单 网站名称 <?php $this->options->title() ?>网站地址 <?php $this->options ->siteUrl(); ?>网站标题 <?php $this->archiveTitle([ 'category' => _t('分类 %s 下的文章'), 'search' => _t('包含关键字 %s 的文章'), 'tag' => _t('标签 %s 下的文章'), 'author' => _t('%s 发布的文章') ], '', ' - '); ?><?php $this->options->title(); ?>网站说明 <?php $this->options->description() ?>文章或者页面的作者 <?php $this->author(); ?>作者头像 < ?php $this->author->gravatar('40') ?>作者邮箱 <?php $this->author->mail(); ?>上一篇与下一篇调用代码 <?php $this->thePrev(); ?> <?php $this->theNext(); ?>RSS地址 <?php$this->options->feedUrl(); ?> -
修改Joe再续前缘主题跳转界面美化教程 由于Joe再续前缘主题1.34版本中的跳转界面外部引用css文件失效,导致这个界面显示异常 跳转界面图片 于是我找ai帮我生成了一个跳转界面,下面我就分享给大家,直接复制粘贴即可,修改usr/themes/Joe/module中的goto.php文件 效果图 效果图图片 修改前的goto.php代码 <?php if (!defined('__TYPECHO_ROOT_DIR__') || empty($_SERVER['HTTP_HOST'])) { http_response_code(404); exit; } ?> <!DOCTYPE html> <html lang='zh-CN'> <head> <meta name="referrer" content="no-referrer"> <title>即将跳转到外部网站 - <?= Helper::options()->title ?></title> <meta content='noindex, nofollow' name='robots'> <meta charset='utf-8'> <link rel="shortcut icon" href="<?= Helper::options()->JFavicon ?>" /> <meta content='width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1.0, user-scalable=no' name='viewport'> <link rel="stylesheet" media="all" href="https://cn-assets.gitee.com/assets/external_link/app-cdbd476d857bfad8751f35a067840adf.css" /> </head> <body> <div class='gitee-external-link-wrapper'> <img class="logo-img" src="<?= Helper::options()->JLogo ?>" alt="Logo black" /> <div class='content-box'> <div class='content-title'>即将跳转到外部网站</div> <div class='content-text'>您将要访问的链接不属于 <?= Helper::options()->title ?> ,请关注您的账号安全。</div> <div class='content-link'> <div class='external-link-href'></div> </div> <div style="background:#409eff" class='ui button orange external-link-btn'>继续前往</div> </div> </div> </body> </html> <script> window.is_black = false; (function() { var e = document.querySelector(".external-link-href"); // var t = window.atob(new URLSearchParams(location.search).get("url")); var t = `<?= $location ?>`; if (t && (e.innerText = t, !window.is_black)) { var n = document.querySelector(".external-link-btn"); n && n.addEventListener("click", function() { window.location.href = t }) } }()); </script>修改后的goto.php文件 <?php if (!defined('__TYPECHO_ROOT_DIR__') || empty($_SERVER['HTTP_HOST'])) { http_response_code(404); exit; } ?> <!DOCTYPE html> <html lang='zh-CN'> <head> <meta name="referrer" content="no-referrer"> <title>即将跳转到外部网站 - <?= $this->options->title ?></title> <meta content='noindex, nofollow' name='robots'> <meta charset='utf-8'> <link rel="shortcut icon" href="<?= $this->options->JFavicon ?>" /> <meta content='width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1.0, user-scalable=no' name='viewport'> </head> <body> <style> * { margin: 0; padding: 0; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; } body { min-height: 100vh; display: flex; justify-content: center; align-items: center; background: linear-gradient(rgba(0,0,0,0.3), rgba(0,0,0,0.3)), url('https://t.alcy.cc/fj') center/cover fixed; padding: 20px; } .container { background: rgba(255, 255, 255, 0.15); backdrop-filter: blur(12px) saturate(180%); -webkit-backdrop-filter: blur(12px) saturate(180%); border-radius: 20px; padding: 40px; max-width: 600px; width: 90%; text-align: center; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); border: 1px solid rgba(255, 255, 255, 0.15); } h1 { color: #fff; margin-bottom: 20px; font-size: 2.2em; text-shadow: 2px 2px 6px rgba(0, 0, 0, 0.3); } p { color: rgba(255, 255, 255, 0.95); line-height: 1.6; margin: 15px 0; font-size: 1.1em; } .time { color: #FFD740; font-weight: 600; font-size: 1.2em; margin: 20px 0; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); } .loader { width: 50px; height: 50px; border: 4px solid rgba(255, 255, 255, 0.2); border-top-color: #fff; border-radius: 50%; margin: 20px auto; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .external-link-btn { background: rgba(255, 255, 255, 0.25); color: #fff; border: none; padding: 12px 30px; border-radius: 30px; font-size: 1em; cursor: pointer; margin-top: 20px; transition: all 0.3s ease; backdrop-filter: blur(4px); font-weight: 500; } .refresh-btn:hover { background: rgba(255, 255, 255, 0.35); transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); } @media (max-width: 480px) { .container { padding: 25px; } h1 { font-size: 1.8em; } p { font-size: 1em; } } </style> <div class="container"> <div class="loader"></div> <h1>即将跳转到外部网站</h1> <p>您将要访问的链接不属于 <?= $this->options->title ?> ,请关注您的账号安全</p> <div class='content-link'> <div class='external-link-href'></div> </div> <button class="ui button orange external-link-btn">继续前往</button> </div> </div> </body> </html> <script> window.is_black = false; (function() { var e = document.querySelector(".external-link-href"); var t = window.atob(new URLSearchParams(location.search).get("url")); if (t && (e.innerText = t, !window.is_black)) { var n = document.querySelector(".external-link-btn"); n && n.addEventListener("click", function() { window.location.href = t }) } }()); </script>