hansanghyeon / blog Goto Github PK
View Code? Open in Web Editor NEWHome Page: https://hyeon.pro
Home Page: https://hyeon.pro
config.js
-> preview.js
์ฌ๋ ค๊ฐ์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ถ๋ฅํ๋ คํ ๋ ๊ฒฐ๊ตญ ํ์ด์ง๋ณ๋ก ๊ตฌ๋ถํด์ผํ๋๋ฐ ๊ทธ ์ง์ ์ ์ ์ ์ํด์ผํ๋ค.
Gatsby์ ๋คํฌ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ฌ์ฉ!
์ฐพ์์ผ๋ ์ ์น์ฑ์ด ๋ ๋ฉ๋ ๋ @media (prefers-color-scheme: dark)
์ธ์ง ์๋์ง ๊ตฌ๋ณํด์ ์ํ๊ฐ์ผ๋ก ๋ถ์ฌํด์ฃผ๊ธฐ ์ด๋ถ๋ถ์ ๋ชจ๋ฆ
๐ค ์ด์ ์ styled-components
์์ ์ธ๋ฏธ์ฝ๋ก ์ด ๋น ์ ธ์ ์ค๋ฅ๋ฅผ ๊ฒช์์์ง๋ง ์์ธ์ ์ถ๋ ฅํด์ฃผ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์๋ค. ๊ทธ๋์ ๊ผญ ์ปดํฌ๋ํธ๋ฅผ ํ์ธํด๋ณด๊ณคํ์๋ค.
styled-components linst semicolons .. etc...
styled-components ํ์ฅ์ค์ styled-components/stylelint-processor-styled-components
ํจํค์ง๊ฐ์๋ค. ์ด๊ฒ์ ์ ์ฉํ์
GA๋ฅผ ํตํ ๊ด๋ฆฌ๋ณด๋ค ์ถํ ํ์ฅ์ฑ์ ์ํด์ GTM์ผ๋ก ์ค์ ํ๊ธฐ
๋ ธ์ ์์ ์ด๋ ์นดํ ๊ณ ๋ฆฌ ๋ฐ ์ด๋ ํ์ด์ง ํ์๋ก ๋ค์ด์๋์ง ์์ ๋ณผ ์ ์๋ ๊ธฐ๋ฅ์ด ํธ๋ฆฌํ๋ค. ๋์ ํด๋ณด๊ณ ์ถ์ ๊ธฐ๋ฅ
๋ ธ์ ์ผ๋ก ์ ๋ฆฌํด์๋ 4log ๋ธ๋ก๊ทธ๋ฅผ ์ด์ํ๋ ์ด์ ์ ํ์คํ ๋ฆฌ์๋ํด์ ์ด์ผ๊ธฐํ๊ณ ์ถ๋ค.
์ฝ๋๋ React๋ฅผ ์ด์ฉํด์ ์ปดํฌ๋ํธ ์์ฑํ๋ฏ์ด ์ฌ์ฉํ์ง๋ง, ๊ณตํต ๋ ์ด์์์ ๊ด๋ฆฌํ๊ฑฐ๋ ํ์ด์ง๋ฅผ ์์ฑํ๊ฑฐ๋ ๋ฐ์ดํฐ์์ค์ ์ปดํฌ๋ํธ๋ฅผ ์ฐ๊ฒฐํ๊ฑฐ๋ ํ๋ ๊ธฐ๋ฅ์ Gatsby์์ ์ ๊ณตํ๊ณ ์์ด์ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค.
Gatsby ํ๋จน๊ธฐ
1์ฐจ beta release๋ฅผ ํ๋ ค๊ณ ๋ณด๋๋ฐ ๋ฉ์ธํ์ด์ง์์๋ง ๋ชจ๋ ๋๋ค์ด ๋ก๋ฉ๋๊ณ svg๊ฐ ๋ง๋ค์ด์ง๋ฉด์ ๋ ์ด์์๊ณผ ๋ค๋ฅธ ๋ชจ์์ผ๋ก ๋์ค๊ฒ๋๋ค. ์ด๋ป๊ฒ ํด๊ฒฐํด์ผํ ๊น?
์ฒ์ ๋ธ๋ก๊ทธ ๋ฐฉ๋ฌธํ์๋ ๋ณด์ฌ์ง๋ ๋๋ฐ์ด์ค์ ๋ผ์ดํธ๋ชจ๋ / ๋คํฌ๋ชจ๋๋ฅผ detechํด์ ๋์ ์ธ ํ ๋ง๋ฅผ ๊ตฌ์ฑํ ์ ์๊ฒ ํด์ฃผ์ด์ผ ํ๋ค.
์นํฉ์ผ๋ก ์ปดํฌ๋ํธ ๊ฐ๋ณ ์ ์ ํ๊ฒฝ์ด์์ผ๋ฉด ์ข๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
codepen์ฒ๋ผ ๊ตฌ์ฑํ๋ ๊ฒ?
gatsby๋ ๋ณ๊ฐ๋ก webpack-cli webpack-dev-server๋ก ๊ตฌ์ฑ!
์นดํ
๊ณ ๋ฆฌ์์ post์ ๋ธ๋ก๊ทธ ํ
ํ๋ฆฟ์ mdx๋ก ๋ณํํ๋ ๊ฒ์ด์๋ wp์์ ๊ฐ์ ธ์ค๋ ๋ฐ์ดํฐ๋ฅผ ๋ทฐ๋ก ๋ณํํด์ฃผ๋ ๊ฒ์ด๋ผ์ ๋ค๋ฅธ ํ
ํ๋ฆฟ์ด ํ์ํ๋ค.
์ด์ ๋ฐ๋ผ์ post ํ
ํ๋ฆฟ์ ๋ ํ
ํ๋ฆฟํํด์ ๋ถ๋ฆฌํด์ ์์ฑํด์ผ ํ ๊ฒ๊ฐ๋ค.
์ต๊ทผ๊ธ์ ๋ณผ ์ ์๊ฒํด์ฃผ๋ ์์ญ์ด ํ์ํ ๊ฒ๊ฐ๋ค
๐จ You need to enable Continuous Integration on Greenkeeper branches of this repository. ๐จ
To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.
Since we didnโt receive a CI status on the greenkeeper/initial
branch, itโs possible that you donโt have CI set up yet.
We recommend using:
If you have already set up a CI for this repository, you might need to check how itโs configured. Make sure it is set to run on all new branches. If you donโt want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/
.
Once you have installed and configured CI on this repository correctly, youโll need to re-trigger Greenkeeperโs initial pull request. To do this, please click the 'fix repo' button on account.greenkeeper.io.
์ง๊ธ์ MDX๋ฅผ ํตํด์ ์ปจํ ์ธ ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ค. ์ด๊ฒ์ WordPress ์ ๊ธ๋ก ๋ณ๊ฒฝ
MDX๋ฅผ ํตํด์ ์ปจํ ์ธ ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ํ์๊ฐ ๋ค์๋ค. ์ ๋ง๋ก CMS๋ก์ ๊ธฐ๋ฅ์ ์ ๋๋ก ํ๊ณ ์๋ ๊ฑด๊ฐ? ์ด๋ ๊ฒ ๊ณ์ ๊ตฌ์ฑํด๋๋ ๊น? ๋์ค์ ๊ธ๋ก์ฎ๊ธฐ๋ ค๋ฉด? ์ด๋ฐ ๊ณ ๋ฏผ๋ค์ด ๋ค๊ธฐ ์์ํ๊ธฐ๋๋ฌธ์ด๋ค.
๊ฐ ํ์ด์ง์์ ํ์ด์ง ์ ๋ณด๋ฅผ ๋ํ๋ด์ฃผ๋ ํ์ด์ง ํค๋์ ์ํ๊ธฐ
๋ฌธ์ ์
blog-post.tsx
์์ ์ฌ๋ค์ผ์ ๋ํ๋ค๋ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํด์ ๋ง๋ ๋ค. ๊ทธ๋ผ ์ด๋ป๊ฒ .mdx
์์ ์ธํฐ๋ ์
์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์๋๊ฒ์ ๊ตฌ๋ถํด์ ๋ถ๋ฌ์ฌ๊น?
https://www.gatsbyjs.org/blog/2019-01-31-using-react-context-api-with-gatsby/
์ ๊ฒ์๋ฌผ์ ์ฐธ๊ณ ํด์ layout ์ปดํฌ๋ํธ Theme provider๋ฅผ ๋ณ๊ฒฝํ๊ธฐ
Category ํ์ด์ง์ template ์ ์
๋ฉ๋ด์์ ํด๋น ์นดํ
๊ณ ๋ฆฌ๋ฅผ ๋ค์ด๊ฐ์๋ ๊ทธ ์นดํ
๊ณ ๋ฆฌ์ ์ธ๋ถ๋ด์ฉ์ ํํํด์ฃผ๊ณ ์ ํ๋ค.
์๋๋ ๋ด๊ฐ ๋
ธ์
์์ ์นดํ
๊ณ ๋ฆฌ๋ณ๋ก ํ์ด์ง๋ฅผ ์ด์ํ๋ ๋ฐฉ์์ธ๋ฐ ์ด๊ฒ์ ํํ์ด์ง๋ก ๊ฐ์ ธ์ค๊ณ ์ ํ๋ค.
ํ์ฌ wp, mdx ๋ฐ์ดํฐ๋ก ํผ์ฉ์ผ๋ก ๋ธ๋ก๊ทธ๋ฅผ ๊ตฌํํ์๋ค. ๊ทธ๋์ ๊ฐ ํฌ์คํธ๋ค์ ๋ถ๋ฌ์ค๋ ๊ณณ์ด๋ฌ๋ผ ์ด์ ๊ธ ๋ค์๊ธ์ ๊ตฌํํ๊ธฐ ๋ฒ ์ฐจ๋ค. category๊ด๋ จ ํ๋ก์ ํธ ์๋ฃํ๊ณ ๋ฒํผ ๊ตฌํํ๊ธฐ!
์๋? ๋ค์๊ธ, ์ด์ ๊ธ์ด ์์ด์ผ ์ฌ์ฉ์๋กํ์ฌ๊ธ ๋๋ฌ๋ณด๊ธฐ ํธํ๊ธฐ ๋๋ฌธ์ ์๋๋ฉด ์ด์ ๊ธ ๋ค์๊ธ์ด์๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ด๋ํ ์์๋ ๊ตฌํ์ ์๊ฐํด๋ณด๊ธฐ
eslintํ๊ณ prettierํ๊ณ ๊ฐ์ด ์ค์ ํ๊ธฐ ์ด๋ ค์ ๋๋ฐ ์ด๋ป๊ฒ ์ค์ ํ๋์ง ์ดํดํ์ผ๋ ์ ์ฉํ๊ธฐ!
import module from 'module'
์ด๋ฐ์์ผ๋ก ๋์ค๊ฒ๋๋ ๊ฒLorem ipsum...
์ผ๋ก ์ฑ์๋ฃ๋๋ฐ 100๊ธ์๊ฐ ๋์ด์ lint์์ ์๋ฌ๋ฅผ ๋ด๋ฟ๋๊ฒ์ ํด๊ฒฐํ๋ ค๊ณ ()๊ฐ์ธ์ฃผ๊ณ ๋จ๋ฝ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๋ถํธํ๋คFramer X๋ฅผํตํ ํ์ด์ง์ ํ ๋ชจ์ ์ถ๊ฐํ๊ธฐ
Gatsby์ ํ์ด์ง์ ํ ํธ๋์ง์ ํ๋ฌ๊ทธ์ธ๋์์ง๋ง ์ถํ ๊ณ์์ ์ผ๋ก ์ธํฐ๋ ์ ๊ด๋ จ ์ปดํฌ๋ํธ๋ค์ ์ถ๊ฐํ๊ฑฐ๋ ๋ฐ์์ ๋ง๋ค๋ ค๋ฉด ๋ ํ์ฉ๋ฒ์๊ฐ ์ข์ ํด๊ณผ ๋ชจ์ ์ ์ฌ์ฉํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
Gatsby์์ ๊ตฌ์ฑ์์์์์ StaticQuery
๋ฅผ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ค์ด ๋ง๋ค. ๊ทธ๋ฐ๋ฐ ์ด๊ฒ๋ค storybook์์ ๋ทฐํ
์คํ
์ํ๋ ค๊ณ ๋ณด๋ฉด ํด๋น ๋ฐ์ดํฐ๊ฐ ์์ด์ ์ค๋ฅ๋ฅผ ๋ธ๋ค.
์ฐธ๊ณ
StoryBook์์ aliasํ ๋ ๋ฃจํธ ๊ฒฝ๋ก๋ ํด๋น .storybook
ํด๋๋ฅผ ํฅํ๋ค. ๊ทธ๋์ aliasํด ์ค๋ ../src/
์ด๋ฐ์์ผ๋ก ๋ฃจํธ๋ฅผ ๋ค์ ์ก์์ค์ผํ๋ค.
Redux์ ์ค์
์์ผ๋ก ์ํ๊ด๋ฆฌ์๋ํ ๊ธฐ์ ๋ก Redux๋ฅผ ์ฌ์ฉ
#24
Travis๋ฅผ ํตํด์ ์๋์ผ๋ก ๋น๋ ๋ฐฐํฌํ๋ คํ๋๋ฐ ์ปจํ ์ธ ๋ Post๋ผ๋ ๊นํ ์ ์ฅ์์์ ๊ด๋ฆฌํ๊ณ ์์ด์ 4log๋ฅผ ์๋๋ฐฐํฌํ๊ฒ๋๋ฉด ์๋ฌด๋ฐ ์ปจํ ์ธ ๊ฐ ์๋ ์ํ๋ก ๋ฐฐํฌ๊ฐ๋๋ฒ๋ฆฐ๋ค. ์ด๋ค ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ ์ ์์๊น?
Daily blog๊ฐ์ ๊ฒฝ์ฐ์๋ ์ฌ์ง์ ์ด์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ ์ ์ธ ์ด๋ฏธ์ง๋ nas๋ฅผ ํ์ฉํ๊ธฐ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ผํฐ ๋ง๋ค์ด์ ์ฌ์ฉํด๋ณด๊ธฐ.
master branch๋ก ํ๋ฆฌํ๋ฅผํ ๋๋ ๋ฆด๋ฆฌ์ฆ๊ฐ์๋ฃ๋์ด์ ๋ฐฐํฌํ๋ ๊ฒ์ด๋ผ์ ์ด ์ํฉ์์๋ gatsby๋ก ๋ฐฐํฌํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ๊ฒ
๊ธ ์์ธํ์ด์ง์์ ์๋จ์ ์ธ๋ค์ผ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ๋ ์ข์๊ฒ๊ฐ๋ค!
๊ธฐ๋ฅ ๊ฐ์
๋์ค ํ๊ฐ์ง๋ง ๊ฐ๋ฅํ๊ฒ ์ค์ ํ๊ธฐ
๋คํฌ๋ชจ๋, ๋ผ์ดํธ๋ชจ๋๋ฅผ ์ง์ ํ๋๋ฐ ๋ฌธ์ ๊ฐ์๋๋ฐ ์ด๊ฒ์ ์บ์๊ฐ์์ด ์ฒ์์ผ๋ก ๋ฐฉ๋ฌธ ํ์๋ ์ผ์ด๋๋ ํ์?
์? ๊ทธ๋ ๊ฒ ์๊ฐํ๋๊ฐ?
์บ์๊ฐ์๋ ์ํ์์๋ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์๋ก๊ณ ์นจ ํ์๋ ์ ์์ ์ผ๋ก ๋ณด์ฌ์ง๋๊น.
๊ทธ๋ผ ์ด๋ป๊ฒ ํด๊ฒฐํด ๋ณผ ๊ฒ์ธ๊ฐ?
์ฒซ ๋ก๋ฉ๋
window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
์ฝ๋๋ฅผ ํ์ฉํด์ styled-components
๋ฅผ ๋ถ์ฌํด์ฃผ๊ณ ์ดํ์๋ ํด๋น ๋ฐ์ดํฐ๋ฅผ overload ํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ฉด ๋์ง์์๊น?
gutenberg ๋ฐ์ดํฐ๋ก ๊ฐ์ ธ์จ code ๋ธ๋ญ ๊ตฌํ prism ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด์ฉ
wp cms์์ gutenbreg์์ ๊ฐ ๋ธ๋ญ๋ง๋ค ๊ฐ์ ธ์ค๊ณ ๊ทธ ๊ฐ์ json์ด์ด์ string ๊ฐ์ผ๋ก ๋ฐ๋๋ค
์์๋ก
const codeblock = `<!-- wp:code -->\n<pre title=\"gatsby-config.js\" class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">module.exports = {\n plugins: [\n // You can have multiple instances of this plugin\n // to create pages from React components in different directories.\n //\n // The following sets up the pattern of having multiple\n // \"pages\" directories in your project\n {\n resolve: `gatsby-plugin-page-creator`,\n options: {\n path: `${__dirname}/src/account/pages`,\n },\n },\n {\n resolve: `gatsby-plugin-page-creator`,\n options: {\n path: `${__dirname}/src/settings/pages`,\n },\n },\n ],\n}</code></pre>\n<!-- /wp:code -->\n\n<!-- wp:paragraph -->\n<p>์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ์ด์ง๋ฅผ ๋ถ๋ฌ์ค๋ ๊ณณ์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณ๊ฒฝ ํ ์ ์๋ค.</p>\n<!-- /wp:paragraph -->`
์์ ๊ฐ์ด ๋ฐ์์จ๋ค๊ณ ํ์๋
<pre>
<code>
๋ฅผ ๋ถ๋ฆฌํด์ ์ค์ ๋์ฒ๋ผ ์ ์ํด์ผํ๋ค. prism์ ํด๋น ์์์ฒ๋ผ ๊ตฌํํ๋ คํ๋ค
const Prism = require('prismjs');
const loadLanguages = require('prismjs/components/');
loadLanguages(['haml']);
// The code snippet you want to highlight, as a string
const code = `= ['hi', 'there', 'reader!'].join " "`;
// Returns a highlighted HTML string
const html = Prism.highlight(code, Prism.languages.haml, 'haml');
ํ์ฌ๋ gatsby-use-dark-mode
๋ก ๊ตฌํํ๋ค ํ์ง๋ง ์ด ํ๋ฌ๊ทธ์ธ์ด ํด์ฃผ๋ ์ญํ์ ์ ์ญ์์ ์ฌ์ฉํ ํ์๊ฐ์์ด์ Redux๋ก ๋คํฌ๋ชจ๋์ ์ํ๋ฅผ ๊ฐ์ ธ์์ ์ฌ์ฉํ๋๊ฒ ์ข์ ๊ฒ๊ฐ๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋ฐ์ด์ค์ ํ์ฌ ํ
๋ง๋ชจ๋๋ฅผ ๊ฐ์ ธ์์ ํ์ฑํํด์ค๋๋ ํ์ํ ๊ฒ๊ฐ๋ค.
use-dark-mode ํจํค์ง๋ก ๊ตฌ์ฑํด์ dark-mode์ ๋ฌด๋ฅผ ๊ฐ๋ ค์ value๊ฐ์ props๋ก ๋๊ฒจ ์คํ์ผ์ ์ง์ ํด์คฌ๋ค.
gatsby์์ gatsby clean && gatsby build && gastby serve
ํด์ ํ
์คํธ๋ฅผ ํด๋ณด๋ฉด
styled-components
props
๋ก darkMode.value
๋ก ์ง์ ํด์คฌ๋ ๋ฐฐ๊ฒฝ์๊ฐ๋ค์ด ์ฌ๋๋ก ์ง์ ๋์ง ์๋ ๋ชจ์ต์ด ๋ณด์ธ๋ค. ์ด๊ฒ ๋ํ styled-components
์ ์ค๋ฅ์ธ์ง ์ฐพ์๋ด์ผํ ๊ฒ๊ฐ๋ค.
๋ณด๊ณ ์๋ ๊ธ์ ๊ด๋ จ๋ ๋ด์ฉ์ ๊ธ์ ๋ณด์ฌ์ฃผ๋ฉด ์ข์ ๊ฒ๊ฐ๋ค.
Travis๋ฅผ ์ด์ฉํ ์๋๋ฐฐํฌ ์ค์ ํ๊ธฐ
์ง๊ธ์ ์ปจํ ์ธ ๋ฅผ ์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ๊ตฌ์ฑํ๊ธฐ ํ๋ค์ด์ ํ๊ทธ๋ณ๋ก ๋๋ ์ ๋ณด์ฌ์ง๋ ๊ฒ์ผ๋ก ๋์ฑํด์ ๊ตฌํ
npm i --save-dev @storybook/addon-viewport
์คํ ๋ฆฌ๋ถ์์ ํธ๋ฆฌํ๊ฒ ๋ชจ๋ฐ์ผ ํ๋ธ๋ฆฟ์ ๋ทฐํฌํธ๋ฅผ ์ ํด์ ๋ณผ ์ ์๊ฒ ํด์ฃผ๋ ํ๋ฌ๊ทธ์ธ์ด๋ค.
https://github.com/storybookjs/storybook/tree/master/addons/viewport
์ง์ ๋ทฐํฌํธ๋ฅผ ์ง์ ํด์ค๋ storybook์ ui ํจ๋๋ค๊ณผ ๊ฒน์ฒ์ ์ฌ๋๋ก๋ ๋ทฐํฌํธ๋ฅผ ํ ์คํธ ํ ์ ์๋ค.
https://dan4log.com/
์๋ ํํ์ด์ง๋ฅผ ๋ง์ด๊ทธ๋ ์ด์
ํ๋ฉด์ ์ํ๋ ๋์์ธ๊ณผ ์ธํฐ๋ ์
์ ์ฒจ๋ถํด์ ์กฐ๊ธ ๋ณํ๋ฅผ ์ฃผ๊ธฐ
blog ์ฐธ๊ณ
https://feel5ny.github.io/
๋ธ๋ก๊ทธ thumbnail ์์ญ์์ ์ํ๋ ์ธํฐ๋ ์
์์๋ฅผ ๋ฃ๊ณ ์ถ์๋๊ฐ ๋ง๋ค. ํ๋ฒํ ๋ธ๋ก๊ทธ๋ก ๋ง๋ค๊ณ ์ถ์ง ์์ผ๋๊น
์๊ฐํ๋ค๊ฐ ํ์ฌ๋ ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ ํ๋๋ฐ ์ด ๋ถ๋ถ์ ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ ๋ฐ ๋น์จ์ ๋ง๊ฒ ์์ญ์ ์ฐจ์งํ๊ฒ ์ ์ํ๊ณ ์ด๋ฏธ์ง๋ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋ฃ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ ํ๋ฉด ์ด๋จ๊น?
anime.js๋ฅผ ์ฌ์ฉํด์ ๋ก๊ณ ์ ๋๋ฉ์ด์
๋ง๋ค๊ธฐ
anime.js๋ก ๋ก๊ณ ์ ๋๋ฉ์ด์
์ ๋ง๋ค๊ธฐ ์ํด์๋ ์ผ๋จ ๋ก๊ณ ๋ฅผ SVG๋ก ๋ฝ์ ๋ด์ผํ๋ค!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.