首頁 > web前端 > js教程 > Latio Team:由技術駭客共同建構的社區

Latio Team:由技術駭客共同建構的社區

DDD
發布: 2024-10-31 01:50:02
原創
455 人瀏覽過

這是 Wix Studio 挑戰賽:社群版的投稿內容。

我的社群平台

Latio Team 是一個為拉丁美洲的技術建構者建立的社區,它是一個在參加黑客馬拉松時參與、學習、成長和聯繫的地方。社群頁麵包括以下功能:

  1. 人才庫:會員的個人資料列在公開頁面上,旨在讓招募人員或其他企業家看到。
  2. 工作機會:為會員展示最新遠距工作的招募板(API由RemoteOK提供),會員可以在社群頁面內查看並申請職位。
  3. 黑客馬拉松清單:為我們的會員分享和發布新的黑客馬拉松機會的地方。
  4. 連結:與其他成員交談、發布工作更新、尋找新合作者的空間。
  5. 工作諮詢:每個會員個人資料都有一個聯絡按鈕,招募人員可以向他們發送訊息或要求工作諮詢。然後,會員可以在自訂清單頁面中查看收到的訊息,而無需暴露其私人詳細資訊。

示範

專案連結:https://fredoist.wixstudio.io/latio-team

首頁:
Latio Team: A community for tech hackers building togheter

人才庫:
Latio Team: A community for tech hackers building togheter

求職板和貼文
Latio Team: A community for tech hackers building togheter
Latio Team: A community for tech hackers building togheter

黑客馬拉松列表:
Latio Team: A community for tech hackers building togheter

連接:
Latio Team: A community for tech hackers building togheter

會員簡介:
Latio Team: A community for tech hackers building togheter

工作查詢表格和清單:
Latio Team: A community for tech hackers building togheter
Latio Team: A community for tech hackers building togheter

發展歷程

如果您已經了解 JavaScript,那麼使用 Wix 的 Studio 和 Velo API 進行建置非常容易。

Velo API 的所有文件都清晰且非常完整,而且 Wix Studio 內的編輯器具有一些很棒的自動完成功能,非常易於使用。一旦開始建置和測試編輯器,您就會了解它的工作原理,並且可以快速實現新的 API。

另外一點,Wix 的模板可以讓您非常快速地建立一個令人驚嘆的網站,設計會適應您添加的每個新應用程式元素,這非常酷,因為您不需要接觸其他任何東西。

這是一些功能的程式碼區塊,以便您可以複製它們:

職缺

import { Permissions, webMethod } from "wix-web-module";
import { getJSON } from "wix-fetch";

const formatPrice = (p) =>
    new Intl.NumberFormat('en-US', {
        notation: 'compact',
        maximumFractionDigits: p < 1 ? 3 : 1,
    }).format(Number(p));

// GET call using getJSON
export const getJobs = webMethod(Permissions.Anyone, async () => {
    const response = await getJSON(
        "https://remoteok.com/api",
    );
    const jobs = response.slice(1).map(job => {
        job._id = job.id;
        job.salary_range = `$ ${formatPrice(job.salary_min)}-${formatPrice(job.salary_max)}`
        job.company_logo = job.company_logo ? `https://remoteok.com/cdn-cgi/image/format=auto,fit=contain,width=100,height=100,quality=50/${job.company_logo}` : null;
        job.logo = job.logo ? `https://remoteok.com/cdn-cgi/image/format=auto,fit=contain,width=100,height=100,quality=50/${job.logo}` : null;
        job.image = job.company_logo ?? job.logo ?? `https://ui-avatars.com/api/?name=${job.company}`
        return job;
    })
    return jobs;
});
登入後複製

職位頁面

import { ok, notFound, WixRouterSitemapEntry } from "wix-router";
import { getJobs } from "backend/fetch-jobs.web"

export async function job_Router(request) {

    // Get item name from URL request
    const slug = request.path[0];

    // Get the item data by name
    const jobs = await getJobs();
    const data = jobs.filter(job => job.slug === slug)

    if (data.length) {
        const job = data[0];

        // Define SEO tags 
        const seoData = {
            title: job.position,
            description: "This is a description of " + job.position + " page",
            noIndex: false,
            metaTags: [{
                "property": "og:title",
                "content": job.position
            }, ]
        };

        // Render item page 
        return ok("job-page", job, seoData);
    }

    // Return 404 if item is not found 
    return notFound();
}

export async function job_SiteMap(sitemapRequest) {
    const jobs = await getJobs()

    // Convert the data to site map entries
    const siteMapEntries = jobs.map((job) => {
        const data = job;
        const entry = new WixRouterSitemapEntry(job.slug);
        entry.pageName = "job-page"; // The name of the page in the Wix editor to render
        entry.url = "/job/" + job.slug; // Relative URL of the page
        entry.title = data.position; // For better SEO - Help Google
        return entry;
    });

    // Return the site map entries
    return siteMapEntries;
}
登入後複製

寄詢問給任何會員

import { Permissions, webMethod } from "wix-web-module";
import wixData from "wix-data";

export const sendInquiry = webMethod(
    Permissions.Anyone,
    async (username, email, details, budget) => {
        const results = await wixData.query("Members/PrivateMembersData").eq('slug', username).find()
        const member = results.items.length > 0 ? results.items[0] : null;
        if(member) {
          const memberId = member._id;
          const result = await wixData.save("WorkInquiries", {
            recipientId: memberId,
            contactEmail: email,
            details,
            budget
          })
          if(result) {
            return true
          }
        }
        return false;
    }
);
登入後複製

取得會員查詢

import { Permissions, webMethod } from "wix-web-module";
import { query } from "wix-data";
import { currentMember } from "wix-members-backend"

export const getInquiries = webMethod(
  Permissions.SiteMember, 
  async () => { 
    const member = await currentMember.getMember();
    const data = await query("WorkInquiries").eq('recipientId', member._id).find();

    return data.items;
  }
);

登入後複製

Velo API

  1. wix-data:它用於儲存、獲取和渲染自訂集合資料以及公共/私有功能中的成員資料。
  2. wix-fetch:職位發布由 RemoteOK 的 API 提供,並使用 Wix 的取得方法取得這些職位,然後將職位渲染到中繼器區塊中。
  3. wix-router:職缺也會被渲染到使用 Wix 路由器的自己的頁面。
  4. wix-members-backend:它用於將查詢表單連結到自訂集合,發送資料後,使用此 API 透過匹配設定檔 slug 檢索memberId,然後將其與表單資料一起傳遞到集合。
  5. wix-location-frontend 和 wix-window-frontend:這些僅用於獲取 URL 數據,例如路徑或成員 slug。

維克斯應用程式

  1. Wix 會員區:用於使用者設定檔和身份驗證。
  2. Wix Groups:用於連線功能。
  3. Wix FAQ:將常見問題加入首頁。
  4. CMS:我使用了一些 CMS 連線來顯示頁面內的資料。

以上是Latio Team:由技術駭客共同建構的社區的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板