If you’re anything like me, you like being lazy shortcuts. The“Deploy to Netlify” buttonallows me to take this lovely feature of my personality and be productive with it.
Clicking the button above lets me (or you!) instantly clone myNext.js starter projectand automatically deploy it to Netlify. Wow! So easy! I’m so happy!
Now, as I was perusing the docs for the button the other night, as one does, I noticed that you canpre-fill environment variablesto the sites you deploy with the button. Which got me thinking… what kind of sites could I customize with that?
Idea: “Link in Bio” website
Ah, the famed “link in bio” you see all over social media when folks want you to see all of their relevant links in life. You can sign up for the various services that’ll make one of these sites for you, but what if you could make oneyourselfwithout having to sign up for yet another service?
But, we also are lazy and like shortcuts. Sounds like we can solve all of these problems with the “Deploy to Netlify” (DTN) button, and environment variables.
How would we build something like this?
In order to make our DTN button work, we need to make two projects that work together:
- A template project (This is the repo that will be cloned and customized based on the environment variables passed in.)
- A generator project (This is the project that will create the environment variables that should be passed to the button.)
I decided to be a little spicy with my examples, and so I made both projects with Vite, but the template project uses React and the generator project uses Vue.
I’ll do a high-level overview of how I built these two projects, and if you’d like to just see all the code, you can skip to the end of this post to see the final repositories!
The Template project
To start my template project, I’ll pull in Vite and React.
npm init @vitejs/app
After running this command, you can follow the prompts with whatever frameworks you’d like!
Now after doing the wholenpm installthing, you’ll want to add a.local.envfile and add in the environment variables you want to include. I want to have a name for the person who owns the site, their profile picture, and then all of their relevant links.
VITE_NAME=Cassidy Williams VITE_PROFILE_PIC=https://github.com/cassidoo.png VITE_GITHUB_LINK=https://github.com/cassidoo VITE_TWITTER_LINK=https://twitter.com/cassidoo
You can set this up however you’d like, because this is just test data we’ll build off of! As you build out your own application, you can pull in your environment variables at any time for parsing withimport.meta.env. Vite lets you access those variables from the client code withVITE_, so as you play around with variables, make sure you prepend that to your variables.
Ultimately, I made a rather large parsing function that I passed to my components to render into the template:
function getPageContent() { // Pull in all variables that start with VITE_ and turn it into an array let envVars = Object.entries(import.meta.env).filter((key) => key[0].startsWith('VITE_')) // Get the name and profile picture, since those are structured differently from the links const name = envVars.find((val) => val[0] === 'VITE_NAME')[1].replace(/_/g, ' ') const profilePic = envVars.find((val) => val[0] === 'VITE_PROFILE_PIC')[1] // ... // Pull all of the links, and properly format the names to be all lowercase and normalized let links = envVars.map((k) => { return [deEnvify(k[0]), k[1]] }) // This object is what is ultimately sent to React to be rendered return { name, profilePic, links } } function deEnvify(str) { return str.replace('VITE_', '').replace('_LINK', '').toLowerCase().split('_').join(' ') }
I can now pull in these variables into a React function that renders the components I need:
// ... return ( <div> <img alt="{vars.name}" src="%7Bvars.profilePic%7D"> <p>{vars.name}</p> {vars.links.map((l, index) => { return <link key="{`link${index}`}" name="{l[0]}" href="%7Bl%5B1%5D%7D"> })} </div> ) // ...
And voilà! With a little CSS, we have a “link in bio” site!
Now let’s turn this into something that doesn’t rely on hard-coded variables. Generator time!
The Generator project
I’m going to start a new Vite site, just like I did before, but I’ll be using Vue for this one, for funzies.
Now in this project, I need to generate the environment variables we talked about above. So we’ll need an input for the name, an input for the profile picture, and then a set of inputs for each link that a person might want to make.
In myApp.vuetemplate, I’ll have these separated out like so:
<template> <div> <p> <span>Your name:</span> <input type="text" v-model="name"> </p> <p> <span>Your profile picture:</span> <input type="text" v-model="propic"> </p> </div> <list v-model:list="list"></list> <generatebutton :name="name" :propic="propic" :list="list"></generatebutton> </template>
In thatListcomponent, we’ll have dual inputs that gather all of the links our users might want to add:
<template> <div> Add a link: <br> <input type="text" v-model="newItem.name"> <input type="text" v-model="newItem.url"> <button>+</button> <listitem v-for="(item, index) in list" :key="index" :item="item"></listitem> </div> </template>
So in this component, there’s the two inputs that are adding to an object callednewItem, and then theListItemcomponent lists out all of the links that have been created already, and each one can delete itself.
Now, we can take all of these values we’ve gotten from our users, and populate theGenerateButtoncomponent with them to make our DTN button work!
The template inGenerateButtonis just antag with the link. The power in this one comes from themethodsin the<script>.</script>
// ... methods: { convertLink(str) { // Convert each string passed in to use the VITE_WHATEVER_LINK syntax that our template expects return `VITE_${str.replace(/ /g, '_').toUpperCase()}_LINK` }, convertListOfLinks() { let linkString = '' // Pass each link given by the user to our helper function this.list.forEach((l) => { linkString += `${this.convertLink(l.name)}=${l.url}&` }) return linkString }, // This function pushes all of our strings together into one giant link that will be put into our button that will deploy everything! siteLink() { return ( // This is the base URL we need of our template repo, and the Netlify deploy trigger 'https://app.netlify.com/start/deploy?repository=https://github.com/cassidoo/link-in-bio-template#' + 'VITE_NAME=' + // Replacing spaces with underscores in the name so that the URL doesn't turn that into %20 this.name.replace(/ /g, '_') + '&' + 'VITE_PROFILE_PIC=' + this.propic + '&' + // Pulls all the links from our helper function above this.convertListOfLinks() ) }, },
Believe it or not, that’s it. You can add whatever styles you like or change up what variables are passed (like themes, toggles, etc.) to make this truly customizable!
Put it all together
Once these projects are deployed, they can work together in beautiful harmony!
- Here’s my template repositorythat gets populated with the environment variables, andan example site made with it!
- Here is my generator repository that generates the environment variables, and the site that’s built with it!
This is the kind of project that can really illustrate the power of customization when you have access to user-generated environment variables. It may be a small one, but when you think about generating, say, resume websites, e-commerce themes, “/uses” websites, marketing sites… the possibilities are endless for turning this into a really cool boilerplate method.
以上が環境変数を使用して「NetLifyにデプロイする」ボタンをハッキングして、カスタマイズ可能なサイトジェネレーターを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

CSSを備えたカスタムカーソルは素晴らしいですが、JavaScriptを使用して次のレベルに物事を引き出すことができます。 JavaScriptを使用して、カーソル状態間で移行し、カーソル内に動的テキストを配置し、複雑なアニメーションを適用し、フィルターを適用できます。

2025年には、互いに互いに跳ね返る要素を伴うインタラクティブなCSSアニメーションは、CSSにPongを実装する必要はありませんが、CSSの柔軟性とパワーの増加はLee&#039;の疑いを補強します。

CSSバックドロップフィルタープロパティを使用してユーザーインターフェイスをスタイルするためのヒントとコツ。バックドロップフィルターを複数の要素間でレイヤー化する方法を学び、それらを他のCSSグラフィカル効果と統合して、精巧なデザインを作成します。

まあ、SVG&#039;の組み込みのアニメーション機能は、計画どおりに非推奨されることはありませんでした。確かに、CSSとJavaScriptは負荷を運ぶことができる以上のものですが、以前のようにSmilが水中で死んでいないことを知っておくのは良いことです

イェーイ、テキストワラップのジャンプを見てみましょう:サファリテクノロジーのプレビューにかなり着陸してください!しかし、それがChromiumブラウザーでの仕組みとは異なることに注意してください。

このCSS-Tricksアップデートは、アルマナック、最近のポッドキャスト出演、新しいCSSカウンターガイド、および貴重なコンテンツを提供するいくつかの新しい著者の追加の大幅な進歩を強調しています。

ほとんどの場合、人々はTailwind&#039;の@Apply機能を紹介します。このように展示されたとき、@Applyはまったく有望な音をしません。だからobvio

馬鹿のように展開することは、展開に使用するツールと複雑さの報酬と複雑さの減少との間の不一致になります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
