零基础小白建立自己的导航网站

前言

我就是那个零基础小白,前端、网页什么的我都没有学习过,只是有一点C#的Winform编程工作经验。做这些东西只是兴趣使然,遇到不懂的地方也只能自己找资料自学。
本文只是想记录一下自己的学习经历,也为其他有兴趣的同胞提供一些参考。
使用的是开源项目geekape/geek-navigation,这是最终的导航网站 猿导航 http://quyonghu.cn

准备工作

开始之前,你必须准备好下面的工作:

  • 安装了node.js、npm(安装过程参考安装Node.js和npm
  • 安装了git for windows(或者其它git客户端)
  • 代码编辑软件(我用的是VS2017)
  • 电脑连网,网速不能太差

上面这些工具是我在折腾个人博客网站和GitBook时安装好的,安装问题可以网上查找教程,这里不在赘述。
我安装的node.js是node-v10.16.0-x64、Git客户端是PortableGit-2.22.0-64,下载链接在文章末尾。

有感而发:个人博客网站现处于无限期暂停状态,主要原因是技术不够会浪费很多时间走弯路、需求也不迫切。GitBook项目处于无限期延迟状态,一方面是我太懒了一拖再拖,一方面也没有想好写什么,目前靠写博客积累经验。这里对软件进行归纳整理也是为了以后重启项目方便。做事情不能只有三分钟热度啊,哎!——2019-12-29

下载导航源代码

安装好PortableGit后会有一个git-cmd.exe,后面的所有命令都在这里面执行。
我使用的导航站源码是geek-navigation静态导航(JSON文件)版本,参照github上面的使用教程,运行命令:

// 1. 下载源码
git clone https://github.com/geekape/geek-navigation/tree/json-navigation

我的运行结果如下:

D:\blog\PortableGit>git clone https://github.com/geekape/geek-navigation/tree/js
on-navigation
Cloning into 'json-navigation'...
fatal: repository 'https://github.com/geekape/geek-navigation/tree/json-navigati
on/' not found

提示找不到,只能到github手动下载了,为了方便我的源码放在D盘根目录。

安装依赖项

参照github上面的使用教程,运行命令(记得要先进入源码的目录):

//进入源码目录
cd D:\geek-navigation-json-navigation
// 2.安装依赖,进入根目录
npm install 或 cnpm install

我的运行结果如下:

D:\blog\PortableGit>
D:\blog\PortableGit>cd D:\geek-navigation-json-navigation

D:\geek-navigation-json-navigation>npm install
npm WARN deprecated [email protected]: [email protected]<3.0 is no longer maintained and not
 recommended for usage due to the number of issues. Please, upgrade your depende
ncies to the actual version of [email protected]
npm WARN deprecated [email protected]: CircularJSON is in maintenance only, fl
atted is its successor.

> [email protected] install D:\geek-navigation-json-navigation\node_modules\yorkie
> node bin/install.js

setting up Git hooks
can't find .git directory, skipping Git hooks installation

> [email protected] install D:\geek-navigation-json-navigation\node_modules\node-
sass
> node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v4.1
3.0/win32-x64-64_binding.node
Download complete  ] - :
Binary saved to D:\geek-navigation-json-navigation\node_modules\node-sass\vendor
\win32-x64-64\binding.node
Caching binary to C:\Users\admin\AppData\Roaming\npm-cache\node-sass\4.13.0\win3
2-x64-64_binding.node

> [email protected] postinstall D:\geek-navigation-json-navigation\node_modules\cor
e-js
> node postinstall || echo "ignore"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfill
ing JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Colle
ctive or Patreon:
> https://opencollective.com/core-js
> https://www.patreon.com/zloirock

Also, the author of core-js ( https://github.com/zloirock ) is looking for a goo
d job -)

> [email protected] postinstall D:\geek-navigation-json-navigation\node_modules\ejs
> node ./postinstall.js

Thank you for installing EJS: built with the Jake JavaScript build tool (https:/
/jakejs.com/)

> [email protected] postinstall D:\geek-navigation-json-navigation\node_modules\n
ode-sass
> node scripts/build.js

Binary found at D:\geek-navigation-json-navigation\node_modules\node-sass\vendor
\win32-x64-64\binding.node
Testing binary
Binary is fine
npm notice created a lockfile as package-lock.json. You should commit this file.

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\fse
vents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]
1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}
)

added 1486 packages from 980 contributors and audited 25243 packages in 583.07s
found 0 vulnerabilities

安装成功,我用了大概20分钟,下面就可以查看网站了。

查看网站

参照github上面的使用教程,运行命令:

// 3. 运行
npm run serve

同样要先进入源码的目录,紧接着上一步的可以直接运行命令
我的运行结果:

D:\geek-navigation-json-navigation>npm run serve

> [email protected] serve D:\geek-navigation-json-navigation
> vue-cli-service serve

 INFO  Starting development server...
98% after emitting CopyPlugin

 WARNING  Compiled with 2 warnings                                    5:45:37 PM

Module Warning (from ./node_modules/eslint-loader/index.js):
error: 'Mock' is defined but never used (no-unused-vars) at src\main.js:5:8:
  3 | import App from './App.vue'
  4 | import router from "./router"
> 5 | import Mock from "./mock"
    |        ^
  6 | import localStorage from "./utils/localStorage"
  7 | const Storage = new localStorage('NAV')
  8 | Vue.config.productionTip = false

error: Mixed spaces and tabs (no-mixed-spaces-and-tabs) at src\main.js:22:2:
  20 | new Vue({
  21 |  router,
> 22 |          render: h => h(App)
     |  ^
  23 | }).$mount('#app')
  24 |

2 errors found.

Module Warning (from ./node_modules/eslint-loader/index.js):
error: 'index' is defined but never used (vue/no-unused-vars) at src\pages\Index
.vue:18:57:
  16 |             active-text-color="#fff"
  17 |           >
> 18 |             <el-submenu :index="item.name" v-for="(item,index) in newData
List" :key="item.name">
     |                                                         ^
  19 |               <template slot="title">
  20 |                 <i :class="item.icon"></i>
  21 |                 <span slot="title">{{item.name}}</span>

error: 'idx' is defined but never used (vue/no-unused-vars) at src\pages\Index.v
ue:23:58:
  21 |                 <span slot="title">{{item.name}}</span>
  22 |               </template>
> 23 |               <el-menu-item :index="nav._id" v-for="(nav,idx) in item.dat
a" :key="nav._id">
     |                                                          ^
  24 |                 <a :href="`#${nav.classify}`">
  25 |                   <i :class="nav.icon"></i>
  26 |                   <span slot="title">{{nav.classify}}</span>

2 errors found.

You may use special comments to disable some warnings.
Use // eslint-disable-next-line to ignore the next line.
Use /* eslint-disable */ to ignore all warnings in a file.

  App running at:
  - Local:   http://localhost:8080
  - Network: http://192.168.1.101:8080

  Note that the development build is not optimized.
  To create a production build, run npm run build.

接下来直接在浏览器打开localhost:8080,查看网站内容。

自定义网站内容

增加修改一级分类

找到geek-navigation-json-navigation\src\pages目录下的Index.vue文件,打开后编写自己的一级分类。我是用VS2017打开文件的,理论上可以用任何一款代码编辑器打开它。
在开始位置编写自己网站的名称,我的是“猿导航”,内容如下:

<template>
  <section class="index container">
    <div class="left-bar" :style="{left: isLeftbar ? 0 : '-249px'}">
      <div class="title">
        <img class="icon-logo" src="/favicon.ico">
        <span>猿导航</span>
      </div>

编写一级分类,源码里面有四个分类,我只是改了分类名称、变量名称。代码如下(可以通过关键词查找快速定位到代码位置):

computed: {
    newDataList() {
      const arr = [];
      let personal = {};
      let net = {};
      let community = {};
      let design = {};
      // 个人
      personal.name = "个人";
      personal.icon = "csz czs-circle";
      personal.data = this.data.filter(
        item => item.classify.indexOf("[个人]") != -1
      );
      arr.push(personal);
      // .NET
      net.name = ".NET";
      net.icon = "csz czs-square";
      net.data = this.data.filter(
        item => item.classify.indexOf("[.NET]") != -1
      );
      arr.push(net);
      // 社区
      community.name = "社区";
      community.icon = "csz czs-camber";
      community.data = this.data.filter(
        item => item.classify.indexOf("[社区]") != -1
      );
      arr.push(community);
      // 设计
      design.name = "设计";
      design.icon = "csz czs-triangle";
      design.data = this.data.filter(
        item => item.classify.indexOf("[设计]") != -1
      );
      arr.push(design);

      return arr;
    }

编写二级分类内容

二级分类内容就是导航数据的内容, 所有导航数据在根目录下public/nav.json里,在某个分类下新增sites数据就可以了,看结构就知道的。内容如下:

[
  {
    "_id": "5ce77a75afdec884fab9599d",
    "classify": "[个人]常用网站",
    "icon": "czs-cup-l",
    "sites": [
      {
        "name": "菜鸟教程",
        "href": "https://www.runoob.com/",
        "desc": "runoob - 菜鸟教程 - 适合新手入门的教程网站",
        "logo": "https://www.runoob.com/favicon.ico"
      },

我只截取了一部分,修改起来很简单,记得增加_id的值(十六进制数,顺序加一即可)。网站的logo我没有使用自己网站保存的图标链接,直接使用目标网站自己的logo资源。如上所示,网站的favicon.ico一般放在网站的根目录下,即使有例外也可以查看网页源码获取logo链接。

生成可发布内容

上面的内容完成后,可以通过以下命令查看效果:

// 3. 运行
npm run serve
// 4. 查看效果
打开localhost:8080

可以看到修改的效果,这里我不上图片,可以直接看我的网站。
此时还不能进行网站部署,因为npm run serve只能查看效果,源码根目录下dist文件夹下的内容还是以前的。
运行生成命令:

npm run build

我的运行结果如下:

D:\blog\PortableGit>cd D:\geek-navigation-json-navigation

D:\geek-navigation-json-navigation>npm run build

> [email protected] build D:\geek-navigation-json-navigation
> vue-cli-service build

-  Building for production...

 WARNING  Compiled with 5 warnings                                   10:14:21 PM

Module Warning (from ./node_modules/eslint-loader/index.js):
error: 'index' is defined but never used (vue/no-unused-vars) at src\pages\Index
.vue:18:57:
  16 |             active-text-color="#fff"
  17 |           >
> 18 |             <el-submenu :index="item.name" v-for="(item,index) in newData
List" :key="item.name">
     |                                                         ^
  19 |               <template slot="title">
  20 |                 <i :class="item.icon"></i>
  21 |                 <span slot="title">{{item.name}}</span>

error: 'idx' is defined but never used (vue/no-unused-vars) at src\pages\Index.v
ue:23:58:
  21 |                 <span slot="title">{{item.name}}</span>
  22 |               </template>
> 23 |               <el-menu-item :index="nav._id" v-for="(nav,idx) in item.dat
a" :key="nav._id">
     |                                                          ^
  24 |                 <a :href="`#${nav.classify}`">
  25 |                   <i :class="nav.icon"></i>
  26 |                   <span slot="title">{{nav.classify}}</span>

2 errors found.

You may use special comments to disable some warnings.
Use // eslint-disable-next-line to ignore the next line.
Use /* eslint-disable */ to ignore all warnings in a file.
 warning  in ./src/main.js

Module Warning (from ./node_modules/thread-loader/dist/cjs.js):

D:\geek-navigation-json-navigation\src\main.js
   5:8  error  'Mock' is defined but never used  no-unused-vars
  22:2  error  Mixed spaces and tabs             no-mixed-spaces-and-tabs

? 2 problems (2 errors, 0 warnings)

 @ multi ./src/main.js

 warning

asset size limit: The following asset(s) exceed the recommended size limit (244
KiB).
This can impact web performance.
Assets:
  js/chunk-vendors.d3208d9c.js (969 KiB)
  favicon.ico (420 KiB)

 warning

entrypoint size limit: The following entrypoint(s) combined asset size exceeds t
he recommended limit (244 KiB). This can impact web performance.
Entrypoints:
  app (1.21 MiB)
      css/chunk-vendors.723a90c8.css
      js/chunk-vendors.d3208d9c.js
      css/app.c94e441d.css
      js/app.77259833.js

 warning

webpack performance recommendations:
You can limit the size of your bundles by using import() or require.ensure to la
zy load some parts of your application.
For more info visit https://webpack.js.org/guides/code-splitting/

  File                                   Size              Gzipped

  dist\js\chunk-vendors.d3208d9c.js      968.69 KiB        272.05 KiB
  dist\js\app.77259833.js                8.92 KiB          3.46 KiB
  dist\css\chunk-vendors.723a90c8.css    227.83 KiB        34.59 KiB
  dist\css\app.c94e441d.css              30.81 KiB         5.29 KiB

  Images and other types of assets omitted.

 DONE  Build complete. The dist directory is ready to be deployed.
 INFO  Check out deployment instructions at https://cli.vuejs.org/guide/deployme
nt.html

生成完成 ,接下来进行部署。

部署网站

将dist目录下的所有文件上传到网站根目录即可部署,网站可以选择Github Pages、对象存储OSS,有域名的可以绑定自己的域名。
我使用的是阿里云的对象存储,域名也是在阿里云买的,如何部署对象存储、绑定域名,网上教程有很多,这里不再重复。
网站的名称(就是浏览器窗口显示的网站名称)需要手动改dist目录下的index.html,我的网站名称是“猿导航”,只需要修改title标签就可以了。

<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon.ico><title>猿导航</title>

我的导航网站是: 猿导航 http://quyonghu.cn

附件

Git for Windows

Node.js Foundation

geek-navigation源码

原文地址:https://www.cnblogs.com/timefiles/p/Use_geek_navigation.html

时间: 2024-10-16 12:39:40

零基础小白建立自己的导航网站的相关文章

免费领取16套深度学习权威实践课,从零基础小白到大牛

摘要:想学习人工智能却无从下手,听过两三遍网课还是不懂什么是卷积神经网络,好不容易啃完了视频却发现没源码没法调参跑代码,快来AI Studio课程!免费优质课程,系统化学习, 名师指导,提供真实开发案例,在线实训调参,提升学习效果,带你快速入行人工智能! 很多学习AI算法的人都很痛苦,尤其是希望进入大热的深度学习领域的你,是否遇到过以下囧境? 网上有大量的学习资料,质量参差不齐,且不知道知该从何学起: 听过两三遍网课,还是不懂什么是卷积神经网络: 好不容易啃完了视频却发现没源码,没法调参跑代码,

零基础小白,如何入门计算机视觉?

计算机视觉是人工智能技术的一个重要领域,打个比方(不一定恰当),我认为计算机视觉是人工智能时代的眼睛,可见其重要程度.计算机视觉其实是一个很宏大的概念,下图是有人总结的计算机视觉所需要的技能树. 如果你是一个对计算机视觉一无所知的小白,千万不要被这棵技能树吓到.没有哪个人能够同时掌握以上所有的技能,这棵树只是让你对计算机视觉有个粗浅的认识. 先来打点鸡血,看看计算机视觉有什么用吧.下面的视频是计算机视觉在自动驾驶上的实际应用,其中涉及立体视觉.光流估计.视觉里程计.三维物体检测与识别.三维物体跟

零基础小白入门Java免费视频教程推荐—小猿圈

Java语言作为世界上使用最多的开发语言,企业庞大的需求量让每年进入Java开发领域的人不减反增.对于零基础小白来讲如何学习Java开发语言是入门的第一个难题.本文小猿圈主要给零基础小白入门Java开发技术推荐一个靠谱的Java免费视频教程. 零基础小白入门Java免费视频教程推荐-小猿圈 关于Java基础入门视频教程的选择,网上有各种各样的解说,也有各式各样的视频教程,那么我们究竟应该如何选择Java免费视频教程呢?如何才能挑选到合适自己的Java基础入门视频教程呢? 许多想通过观看Java视

教你从零基础小白开始怎么学习C语言

想窥探神秘的代码世界?最好的入口无疑就是C语言. C语言是计算机体系结构的基础,向下可以操作硬件(包括ARM,DSP,单片机等各种微处理器),还可以写驱动,写OS,写编译器.向上可以进一步的学习C++,JAVA等面向对象语言,再学习一些图形用户界面框架,比如Qt,MFC,就可做出类似于计算器.QQ等Window桌面应用,再比如Android,就可以做出微信等Android应用,再比如Unity3D,就可以做出类似王者荣耀.刺激战场等手游.想想是不是就有点小激动呢!最后,如果大家如果在自学遇到困难

[触动精灵] 零基础小白学触动1-4

视频地址 http://www.iqiyi.com/playlist443635102.html 零基础小白学触动 - 01 - 说在前面的废话 小知识:Tslib库的定位 是官方为了解决小白不会封装自己的函数 提供了一些常见的封装功能 熟练后 我们可以自己封装自己的函数实现功能 可以不用载入这个库文件 小知识:手册非常强大 手册的搜索功能 和目录列表 ? 零基础小白学触动 - 02 - 注释和循环语句 没什么可说的 注释语句: -- --[[]]-- 流程语句 If 条件1 then Else

[触动精灵]零基础小白学触动5-8

零基础小白学触动 - 05 - 触动常用函数 点击 滑动 原理 其实都可以分解成 按下=> 等待一定时间或者移动动作=>  松开 点击: tSLib库的函数tap(x,y) 后面还有2个参数 可以自己看手册  https://www.zybuluo.com/miniknife/note/293935#函数tap-点击 滑动  moveTo(x1,y1,x2,y2,step)   详细的   https://www.zybuluo.com/miniknife/note/293935#函数move

[触动精灵] 零基础小白学触动9-12

零基础小白学触动 - 09 - TSLib:点击和比色 没什么说的 tap(x,y,ms) 了解:TSLib库 注意以前库文件针对环境不同 库文件也是不同的  比如TSL ib库 对于基础版  专业版   帮你玩版  是不同的库文件 但是现在似乎整合了一部分 其他库文件也有这样的情况 使用的时候注意先看手册 看看当前环境下使用什么库文件 10 - 弹窗检测和无限点击 基础应用 11 - 如何滑动到界面底部 没什么说的 12 - TSLib 常用函数:便携 UI 细节查看http://www.to

零基础小白怎么用Python做表格?

用Python操作Excel在工作中还是挺常用的,因为毕竟不懂Excel是一个用户庞大的数据管理软件.本文用Python3!在给大家分享之前呢,小编推荐一下一个挺不错的交流宝地,里面都是一群热爱并在学习Python的小伙伴们,大几千了吧,各种各样的人群都有,特别喜欢看到这种大家一起交流解决难题的氛围,群资料也上传了好多,各种大牛解决小白的问题,这个Python群:330637182 欢迎大家进来一起交流讨论,一起进步,尽早掌握这门Python语言. 首先导入两个模块xlrd和xlwt,xlrd用

零基础小白转行学习前端的学习路线

零基础如何学web前端_从小白到大神进阶:下面给大家介绍一下学习路线:Web前端知识总的可以分为三个部分:初级知识,中级js,高级框架一,初级的主要内容:浏览器的概念介绍: 浏览器的作用.工作方式浏览器的概念介绍: 浏览器的作用.工作方式HTTP协议: 协议产生的原因.作用.及内容页面加载流程:当用户打开浏览器,输入地址栏并按下回车之后发生的事情HTML-CSS-JS基础-jQuery学习内容:HTML及HTML5:理解浏览器如何解析HTML.基本的语法规则.不同标签的使用方式.嵌套方式CSS: