Wix Studio Challenge: Community Edition에 대한 제출물입니다.
Latio Team은 LATAM에 기반을 둔 기술 개발자를 위해 구축된 커뮤니티로, 해커톤에 참여하면서 함께 참여하고, 배우고, 성장하고, 연결할 수 있는 곳입니다. 커뮤니티 페이지에는 다음 기능이 포함되어 있습니다.
프로젝트 링크: https://fredoist.wixstudio.io/latio-team
홈페이지:
인재 풀:
채용 게시판 및 게시물
해커톤 목록:
연결:
회원 프로필:
작업 문의 양식 및 목록:
이미 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; } );
위 내용은 Latio 팀: 함께 구축하는 기술 해커를 위한 커뮤니티의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!