首页 > 其他分享 >我用 Nextjs 十分钟搭建了一个展示955公司网站

我用 Nextjs 十分钟搭建了一个展示955公司网站

时间:2024-03-23 11:58:19浏览次数:16  
标签:app 955 域名 Nextjs 组件 我用 前端 vercel

前言

打工人终极梦想就是能够 955 吧!一年之前看到过955公司名单,最近偶然又看到一篇955不加班的公司名单推文,发现名单上的公司大都是外企,而且相比一年之前又少了几个。于是想将目前还在榜955名单上的公司记录在网站上,一是方便随时查看,二是想看有哪些公司会在什么时候下线,也一并记录下来,做成时间线。

话不多说,先从基本的开始:搭建网站并展示当前在榜955的公司名单。代码开源地址和网站一并放在结尾了。

一、拉取Nextjs 模板

1、使用 create-next-app 脚手架

这是官方脚手架,拉取模板。注意node版本要大于等于18.17.0。

npx create-next-app 955noicu

2、模板文件配置

选择使用TypeScript、Eslint、Tailwind CSS、App Router 模式。

image.png

3、等待模板拉取和依赖安装

如图所示就说明安装成功了。

.image1.png

二、获取 955 公司名单数据

1、新建数据文件

新建文件 app/lib/data.ts,用户存储和处理955公司数据。

2、输入数据

数据为模板字符串。

const companylist: string = `Afterpay - 上海
Airbnb - 北京
Amazon - 北京/上海
AMD - 上海
Apple - 北京/上海
ArcSoft - 杭州`

3、数据转换为固定格式

转换为数组,数组子项为对象,包括公司名称和地点属性。

interface Company {
    name: string;
    location: string[];
}

const companies: Company[] = companylist.split('\n').map(line => {
    const [name, location] = line.split(' - ');
    return { name: name.trim(), location: location.trim().split('/') };
});

三、公司名单封装为组件

1、新建组件文件

app下新建 ui文件夹,用于存储组件;再在ui文件夹下创建app/ui/companylist/index.tsx

2、编写组件样式和逻辑

每个公司都展示为一个卡片,卡片分别展示公司名称和地点。

采用 grid 布局,能够自适应不同设备屏幕,手机设备每行展示1张卡片,电脑每行展示3张卡片。

export function CompanyList() {
  return (
    <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
      {companies.map((company, index) => (
        <div key={index} className="bg-white p-4 rounded-lg shadow-md">
          <h3 className="text-xl font-semibold mb-2">{company.name}</h3>
          <p className="text-gray-600">
            Locations: {company.location.join(', ')}
          </p>
        </div>
      ))}
    </div>
  );
};

3、组件引入页面

组件引入到app/page.tsx,本项目采用 app 文件夹来区分页面路径,在app 目录下面就为首页。

import { CompanyList } from "./ui/companylist";

export default function Home() {
  return (
    <div className="container mx-auto px-4 py-8">
    <h1 className="text-3xl font-semibold mb-4">Company List</h1>
      <CompanyList />
    </div>
  );
}

4、本地调试预览

执行如下命令。

npm run dev

如图所示说明预览成功

image2.png

访问本地地址预览效果:

20240323113458

四、部署发布

1、推送到github

新建仓库,将本地仓库关联上新建的远程仓库

git remote add origin [email protected]:xxx
git branch -M master
git push -u origin master

2、vercel 部署

从vercel导入github项目,等待自动部署

20240323113513

3、vercel 配置域名

部署完成,由于国内访问不到 vercel.app域名,需要配置域名,这个时候就得拿出我在某讯云上注册的域名了:955no.icu。在域名管理后台配置域名解析到vercel域名服务器上,等待生效即可。

20240323113525

4、线上网站预览

等待域名服务器生效后,即可在浏览器通过域名线上访问到了。传送门:https://www.955no.icu/

结尾

本文通过使用 create-next-app 脚手架快速生成 Nextjs 模板项目;然后获取并处理 955 公司数据,利用处理后的数据封装为组件引入页面,最后通过vercel免费部署到线上,十分钟内完成 955 公司网站搭建和上线。源码和在线网站都放在下面了。

源码:https://github.com/simonzhangs/955noicu

在线体验:https://www.955no.icu/


我的专栏:前端后花园周刊 | 个人建站

这里是松桑的前端后花园,目前坚持在写前端后花园周刊,专注前端基础领域,分享常见前端面试题、前端开源项目、工具库、前端最新动态,目前还一个前端菜鸟,和我一起打怪升级吧!

标签:app,955,域名,Nextjs,组件,我用,前端,vercel
From: https://blog.csdn.net/weixin_43303603/article/details/136963910

相关文章

  • 千万别让老板知道,这套80%海报,是我用生成式 AI 设计的!
    继淡人、浓人近期大幅席卷职场,一类新兴稀有人群正在隐秘的角落悄悄蓄力,等待爆发。他们的特质是:眼看一脸平静,其实内心汹涌;嘴上说着收到,实则无语连篇;他们的幸运色是五彩斑斓的黑;他们的座右铭是“好的,我再改改”;亚马逊云科技开发者社区为开发者们提供全球的开发技术......
  • ChatGPT用10秒画完一张UML流程图,而我用了。。。
    不用AI的程序员,失业潮真的快来临了。一张订单履约的流程图,我花了10分钟才完成,而ChatGPT绘图过程只用了10秒钟,基本可以达到同样的水平,通过ChatGPT可以显著提高画流程图的效率。订单履约流程是一系列精细协作的流程,从客户在销售平台下单开始,至商品交付用户手中结束。此过程跨越多......
  • 真香定律!我用这种模式重构了第三方登录
    分享是最有效的学习方式。博客:https://blog.ktdaddy.com/老猫的设计模式专栏已经偷偷发车了。不甘愿做crudboy?看了好几遍的设计模式还记不住?那就不要刻意记了,跟上老猫的步伐,在一个个有趣的职场故事中领悟设计模式的精髓吧。还等什么?赶紧上车吧。故事办公室里,小猫托着腮帮对......
  • Star 4.2k,这是我用过最舒服的跨平台Redis桌面客户端
    项目介绍TinyRDM一个现代化轻量级的跨平台Redis桌面客户端,支持Mac、Windows和Linux软件截图运行效果版本展示配置连接项目亮点极致轻量极小包体,随处安装随处使用友好外观体验提供外观深色/浅色外观,简单易用的可视化操作体验跨桌面平台支持Mac/Windows/......
  • P9550 「PHOI-1」晚宴筵题解
    题解简化一下题意,已知从\((p,q)\)直接到达\((x,y)\)的费用函数如下:\[\text{cost}(p,q,x,y)=\begin{cases}w_p+w_q+w_x+w_y-p-q-x-y,&l1_x\lep\ler1_x,l2_y\leq\ler2_y\\\text{inf},&\text{otherwise}\\\end{cases}\]问从\((1,1)\)到各位置的最小费用......
  • Comparison between IPQ9574 and IPQ9554 | MLO EHT Solution Unveils the WiFi 7 CPU
    ComparisonbetweenIPQ9574andIPQ9554|MLOEHTWiFi7QualcommSolutionUnveilstheWiFi7CPUforIndustrialApplications-AlderSeriesWi-Fi7elevateswirelessexperiencesandwillaccelerateemergingusecaseswithitsextremedataspeedsandconsis......
  • Python - “人生苦短,我用Python”
      字符串的三种定义方式1、单引号定义法:name='人生苦短,我用Python'2、双引号定义法:name="人生苦短,我用Python"3、三引号定义法:name="""人生苦短,我用Python"""三引号定义法,和多行注释的写法一样,同样支持换行操作。使用变量接收它,它就是字符串;不使用变量接收它,就......
  • 二、nextjs API路由如何做好JWT登录鉴权、身份鉴权,joi字段校验,全局处理异常等(c-shoppi
    介绍在这篇文章中,我们将学习如何在C-Shopping电商开源项目中,基于Next.js14,处理所有API路由中添加身份验证和错误处理中间件的思路与实现。这篇文章中的代码片段取自我最近开源项目C-Shopping,完整的项目和文档可在https://github.com/huanghanzhilian/c-shopping地址查看。Next......
  • 二、nextjs API路由如何做好JWT登录鉴权、身份鉴权,joi字段校验,全局处理异常等(c-shoppi
    介绍在这篇文章中,我们将学习如何在C-Shopping电商开源项目中,基于Next.js14,处理所有API路由中添加身份验证和错误处理中间件的思路与实现。这篇文章中的代码片段取自我最近开源项目C-Shopping,完整的项目和文档可在https://github.com/huanghanzhilian/c-shopping地址查看。Next.js......
  • 一、nextjs如何使项目工程化(c-shopping电商开源)
    欢迎来到本系列文章,这些内容都是从我的开源项目C-Shopping衍生而来的。在这个系列中,我们将深入探讨Next.js和其他技术的各个方面,分享我在开发C-Shopping时积累的见解和最佳实践。如果你发现这些文章有帮助,请考虑在GitHub上为项目点亮一颗星星。你的支持对我来说意义重大,也......