Skip to content

SocialAI-tianji/socialai-web

Repository files navigation

socialai-web

SocialAI homepage

This is a Next.js project bootstrapped with create-next-app.

npx create-next-app@latest --use-pnpm .

Development

Environment setup:

  • nodejs - refer to .node-version. Use fnm to install the correct version.
  • pnpm - pnpm install
  • Start dev server - pnpm dev
  • Pull videos - git lfs pull

环境安装

验证可用版本:node v18.17.0

本项目Next.js是基于 [create-next-app]引导建立的。

  • 下载nodejs(https://nodejs.org/en)(不推荐安装最新版本,并注意安装的目录,后面环境变量有用到)

  • 管理者模式运行终端 ==> 分别输入[node -v]和[npm-v]检验版本号确认是否安装成功

  • 在nodejs文件夹下新建两个文件夹node_glabal和node_cache用来配置环境变量.==>管理者模式运行终端==> 分别输入[npm config set prefix “node_glabal文件的路径”]和[npm config set cache “node_cache文件的路径”]

  • 配置环境变量: 我的电脑 ==> 高级系统设置 ==> 环境变量 ==>系统变量 ==>新建,变量名:NODE_PATH,变量值:node_modulesl文件夹的路径 ==>系统变量找到Path并打开 ==> 添加node_global的路径 ==> 保存退出

  • npm install ==> npm run dev 弹出提示(http://localhost:3000) ==> 本地运行

参考:

遇到过的报错:

项目可调的主要组件(面向写文章的)

  • 设置页边距(如mt表示margin-top,用于设置元素的上外边距)
<div className="container mx-auto -mt-20 pt-20 md:-mt-16 md:pt-16">
    xxxx
</div>
  • 页面内容分布的设置:

flex: 创建一个灵活的盒子,使用弹性布局。
flex-col: 设置元素的子元素垂直排列。
md:flex-row: 在中等屏幕及以上的宽度上,设置元素的子元素水平排列。
items-start: 设置元素的子元素在主轴上起始位置对齐。
justify-start: 设置元素的子元素在交叉轴上起始位置对齐。
border-t-[1px]: 添加一个顶部边框,边框样式为1像素的宽度。
border-[rgba(255,255,255,.2)]: 设置边框颜色为半透明的白色。
pt-4: 设置顶部内边距为4个间距单位。
order: order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0
w-full 表示元素将占据其父容器的整个宽度。
md:w-1/2 md前缀表示在中等屏幕宽度。w-1/2表示将占据其父容器的二分之一宽度。
可以参考这篇文章:(https://zhuanlan.zhihu.com/p/393849980) 有图有代码的理解flex弹性布局

<div className='flex flex-col md:flex-row items-start justify-start border-t-[1px] border-[rgba(255,255,255,.2)] pt-4 pb-0 md:pb-16'>
    <div className='w-full md:w-1/4 order-1 md:order-1 mt-10 md:mt-0'>
        xxxxxxxxx
    </div>
    <div className='w-full md:w-1/2 order-2 md:order-2 mt-10 md:mt-0'>
        xxxxxxxxx
    </div>
</div>
  • 页面的跳转和路径设置:

className="underline"表示这个引用跳转的字段默认带下划线
aria-label="View careers"表示这个引用跳转的字段是View careers(可自行修改)

<a href="/research/overview" className="underline" aria-label="View careers">

a href="/research/overview"是引用的文章路径,表示跳转到同一目录下的/research文件夹下/overview里面的page。
page的内容开头要设置对应的文件名
在这个项目最好用以下通用设置,其中Overview这个是你对应的路径下的文件名

export default function Overview() {
  return    <div className='bg-black text-white'>
    <div className="container mx-auto -mt-20 pt-20 md:-mt-16 md:pt-16">
      XXXXXX
    </div>
            </div>
}
  • 图片的引用:

本项目的图片都放在public的images下,如果是在子目录中,可以将[${basePath}]替换为[../]

<img alt="" src={`${basePath}/images/stangel-2022-0484.jpg`}
    className='w-full h-full object-cover aspect-square'></img>

例:新文章需要的操作

以专栏 Latest updates 为例,我们有四个板块[Introducing ChatGPT team]、 [Introducing the GPT Store]、[SocialAI and journalism]和[Superalignment Fast Grants Dec 14, 2023],将其中的板块跳转到我们对应的文章中。
1.找到app目录下的page.tsx文件,找到代码的{/* Latest updates */}下的Introducing the GPT Store部分

<li className='w-full md:w-1/4 mt-8 md:mt-0 pr-0 md:pr-4'>
                <a href="/blog/introducing-chatgpt-team" className='group'>
                  <div className='flex flex-col items-start justify-start'>
                    <div className='relative w-full'>
                      <img alt='' src={`${basePath}/images/gpt-store-r3.png`}
                        className='w-full h-full object-cover aspect-square'></img>
                    </div>
                    <div>
                      <h3 className='text-lg mt-2 font-semibold group-hover:underline'>Introducing the GPT Store</h3>
                      <div className='mt-1'>
                        <span aria-hidden="true">Jan 10, 2024</span>
                      </div>
                    </div>
                  </div>
                </a>
              </li>

2.该段代码设置文章跳转的路径[a href="/blog/introducing-chatgpt-team"],所以我们需要在目录在app目录下创建/blog/introducing-chatgpt-team文件夹,然后创建page.tsx文件,并用以下代码为模板创建文章:

export default function introducing-chatgpt-team() {
  return    <div className='bg-black text-white'>
    <div className="container mx-auto -mt-20 pt-20 md:-mt-16 md:pt-16">
      XXXXX
    </div>
            </div>
}

注意default function XXXXX得对应上,比如这里就是introducing-chatgpt-team,在XXXX中可以加入各种组件和文章内容。

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages