首页 > 其他分享 >放弃WordPress,纯手撸一个导航网站

放弃WordPress,纯手撸一个导航网站

时间:2023-10-16 13:33:38浏览次数:34  
标签:纯手 https com strapi WordPress TailwindCSS NextJS 导航

最近AI好火啊,各种AI工具导航网站也层出不穷,思路就是建站然后流量做大赚广告费。

于是,我仔细研究下了所谓的导航网站,不仅AI领域,其他诸如编程啊,产品经理啊,跨境电商啊等等行业都有导航站,的确极大的增加了工作效率,做到了工具和资源的整合。

从技术的角度讲,各大导航网站无一例外都是使用了Wordpress来进行快速建站,当然wordpress的竞争对手还有ghost,joomla等等。这种建站工具对于没有编程基础的人来讲,确实极大降低了门槛,不过也存在体积臃肿,可定制化弱等缺点,有些模板还需要付费购买。

好了,进入正题,放弃Wordpress,用NextJS + TailwindCSS + StrAPI 手撸一个导航站需要几步?

首先是技术选型,导航站最重要的就是轻量级可定制化前端+后端CMS,能做到静态站的静态文件生成和部署,有利于SEO(百度&谷歌)。前端选择NextJS + TailwindCSS

1、TailwindCSS (学习上手时间1小时)

TailwindCSS比较简单,说白了就是写代码的时候用简化的语义好理解的CSS编程,再通过webpack等工具自动打包成真正的css。

举个例子:

<div class="mt-2">这是个div</div>

webpack翻译过来 mt就是margin-top,mt-2就是

margin-top: 0.5rem 

官网如下:https://tailwindcss.com/

这些当然也不用自己逐行编写,知道简单的CSS语法,然后抄&改现成的模板就行了。

免费的模板:https://preline.co/index.html 付费的官方模板https://tailwindui.com/

2、NextJS (学习上手时间2小时)

Next.js 是一个轻量级的 React 服务端渲染应用框架。会简单的React语法&html就可以很快上手。

官网链接如下:https://nextjs.org/

npx create-next-app@latest

执行上面的npm命令就可以快速搭起来个架子。然后就是理解目录结构

 src/pages/about.jsx 对应网页 你的域名.com/about 这个地址 about.jsx长这个样子

 这里面就是正常的html和tailwindcss,上手很容易。

接下来就是数据怎么获取,静态站的的话,用的最多的就是

getStaticProps

根据骨架NextJS的代码,随便改改就行了,很好理解。简单来说就是在jsx文件中,用

getStaticProps方法请求StrAPI的API获取结构化数据。  

3、StrAPI (学习上手时间1小时)

 strapi是个开源的无头cms系统,说白了就是自己用strapi的开源代码,搭个cms的服务,不过只有后台编辑内容的可视化界面,数据都存在strapi的mysql之类的数据库中。然后用strapi规定的api格式调用api即可获取你输入编辑的内容数据。 strapi 官网:https://strapi.io/ 部署strapi的服务也很简单:
npx create-strapi-app@latest my-project

命令执行过程中会让你设置数据库的地址和用户名密码等,完全不需要人工操作。然后会有个后台地址,这里面新建你需要的数据结构,再用api调用就行了。

后台大概长这个样子:

 

调用API的方法:https://docs.strapi.io/dev-docs/api/rest#get-an-entry

好了,大功告成~

自己手撸的网站定制化程度极高,想怎么改前端就怎么改,想怎么设置后端数据结构怎么设置。当然对毫无编程基础的又想建站的小伙伴有很高的门槛。不过对于稍微懂些npm,react,css基础知识的小伙伴在几个小时内就可以上手。作为前端练习项目还是不错的。

 

最后附上demo网站地址:https://www.51aiyz.com/

欢迎交流讨论~~

 

标签:纯手,https,com,strapi,WordPress,TailwindCSS,NextJS,导航
From: https://www.cnblogs.com/51aiyz/p/51aiyz.html

相关文章

  • 网络安全知识导航
    <spanstyle="color:red"></span><spanstyle="color:yellow"></span><spanstyle="color:green"></span>网络基础网络通信IP地址OSI七层模型客户端与服务端协议和端口网站构成WEB安全SQL注入课前导论自学部分市场上主流的数据库,及常搭配后端语言;......
  • 自动批量将阿里云盘资源发布成WordPress文章带截图Python脚本(含正文 付费信息 下载地
    自动批量将阿里云盘资源发布成WordPress文章带截图Python脚本(含正文付费信息下载地址SEO等自动设置)自动批量将阿里云盘资源发布成WordPress文章带截图Python脚本(含正文付费信息下载地址SEO等自动设置)源码下载自动上传图片至WordPress站点,使用RestFulAPI批量发布文章,文章含......
  • 用Dokcer搭建一个极致简约的导航页
    用docker搜索镜像luode0320/web-start#dockersearchluode0320/web-start下载镜像#dockerpullluode0320/web-start查看下载的镜像#dockerimages如果镜像存在就可以启动了#dockerrun--restart=always--nameweb-d-p2000:2000luode0320/web-start:late......
  • FDFullscreenPopGesture使用setViewControllers跳转一个隐藏导航栏新页面失效问题
    解决办法:1.对setViewControllers:animated:进行方法交换SELoriginalSelector1=@selector(setViewControllers:animated:);      SELswizzledSelector1=@selector(fd_setViewControllers:animated:);      MethodoriginalMethod1=class_getIn......
  • 编程式导航——两种路由跳转方式
    编程式导航:通过JS的方式实现路由跳转如何实现点击按钮跳转? 一、不传参:1.通过path路径跳转(简易方便)①简写:  按钮的点击事件中写  this.$router.push('/路由路径')    比如:this.$router.push('/search') ②完整写法:this.$router.push({ ......
  • 软件测试技术之地图导航的测试用例
    外观测试屏幕显示不能有花屏、黑点和闪屏,清晰度、亮度、颜色要正常。检测所有按键都能起到相应作用,是否手感不良。UI显示状态、颜色、清晰度、效果。控制:放大,缩小,音量调节功能测试。交叉路口查询测试,点击交叉路口查询后能正确输入城市名称吗。关键字查询:点击关......
  • router-link:导航链接 / 声明式导航
    vue-router提供了一个全局组件router-link(取代a标签)router-link本质还是a标签router-link功能:①能跳转,配置to属性指定路径(必须),本质还是a标签,to无需#②能高亮,默认就会提供高亮类名,可以直接设置高亮样式 router-link会自动给当前导航添加两个类名:router-li......
  • WordPress网站被黑怎么办?【含解决方案】
    在我们的日常WordPress主题售后工作中,经常会有用户反馈网站出现问题,例如:阿里云提示后门木马文件;打开后跳转到其他地址;页面出现乱码;被添加了其他内容等,根据我们的经验,这种一般都是网站被黑导致的。 如何确认网站是否被黑根据以往经验,可以通过以下方式来判断:1、如果是阿里云提......
  • 直播商城源码,去掉导航条和tabbar线条
    直播商城源码,去掉导航条和tabbar线条去掉导航条底部线条 [self.navigationController.navigationBarsetBackgroundImage:[[UIImagealloc]init]forBarMetrics:UIBarMetricsDefault];  [self.navigationController.navigationBarsetShadowImage:[[UIImagealloc]init]......
  • 资源清单编写MySQL,wordpress
    目录mysqlwordpresshttp://k8s.driverzeng.com/v1.19/mysql[root@master-1mysql]#catmysql.yamlapiVersion:"v1"kind:"Pod"metadata:name:mysql57//资源清单叫mysql57spec:nodeName:node-1......