惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
M
MIT News - Artificial intelligence
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
F
Fortinet All Blogs
L
LangChain Blog
D
Docker
G
Google Developers Blog
B
Blog RSS Feed
Google DeepMind News
Google DeepMind News
Vercel News
Vercel News
Recent Announcements
Recent Announcements
MyScale Blog
MyScale Blog
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
Recorded Future
Recorded Future
I
InfoQ
博客园 - 【当耐特】
The Cloudflare Blog
P
Proofpoint News Feed
GbyAI
GbyAI
博客园 - 司徒正美
U
Unit 42
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Jina AI
Jina AI
量子位
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
有赞技术团队
有赞技术团队
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
大猫的无限游戏
大猫的无限游戏
F
Full Disclosure
雷峰网
雷峰网
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
SegmentFault 最新的问题

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
【Svelte从入门到精通】入门篇——安装与使用 - 少数派
2024-05-16 · via 少数派

安装

工欲善其事,必先利其器。在安装Svelte之前,笔者假定读者已完成了以下操作:

  • 安装环境Node.js
  • 安装代码编辑器(推荐VSCode
  • 掌握或了解Html、Css及JavaScript的使用

Vite安装(推荐)
 

在我们安装好Node环境后,我们可以使用Vite来安装。因为Vite的使用对Node.js有较高的版本要求,所以笔者建议读者安装比较新的Node.js。目前笔者使用的版本为v18.15.0

Node Version

如果存在不同的项目依赖不同版本的Node的情况,笔者推荐安装node版本管理工具,如nvm


准备就绪后,安装命令如下,我们分步骤执行:

npm create vite@latest my-svelte-project -- --template svelte

cd my-svelte-project

npm install

首先当我们在命令行工具中敲下 npm create vite@latest my-svelte-project -- --template svelte这一行时,稍等片刻,便会出现如下图:

npm create vite

接着便是按照图上所示,分别执行cd my-svelte-projectnpm install

cd my-svelte-project表示进入到我们刚才创建成功的目录my-svelte-project。

进入目录后,我们执行npm install安装项目所需要的所有依赖项。

如果笔者比较擅长使用Typescript,那可以将 --template svelte替换为--template svelte-ts


如果我们执行的是下面这行(能看出和上面的有什么区别吗?)

npm create vite@latest my-svelte-app

没错,我们没有指定template,即没有指定使用哪个前端库的模板,那么我们会得到以下界面

Select framework

因为我们是学习Svelte,那我们可以通过键盘的上下方向键,选中Svelte选项后回车;

在下一步,我们选择Javascript,同样,如果你掌握了Typescript,你也可选择Typescript。

Javascript


回车后,同样能得到刚才的提示。

同样是cd进入到项目目录,然后执行安装依赖。

npm install依赖安装完成后,我们执行npm run dev将我们的第一个Svelte项目运行起来。


在Github仓库create-vite的代码中,我们能够发现我们下载的内容就是对应目录下的文件。

访问http://localhost:5173,如果你能看到和我一样的页面,那么恭喜你,已经成功地踏出了第一步。

原始安装

这里说的原始安装,其实就是官网首页中出现的安装提示。

npm create svelte@latest my-app

cd my-app

npm install

npm run dev -- --open

敲下npm create svelte@latest my-app命令后,首先会要求我们安装create-svelte

create-svelte

可以看到,官方提供的模板和SvelteKit有关。

SvelteKit是使用 Svelte 来构建 Web 应用的框架。

SvelteSvelteKit之间的关系,相当于ReactNext.js,或者VueNuxt.js。前者是UI框架,而后者则是基于前者来编写的Web框架。因此官网推荐的安装即是通过SvelteKit来安装。

我们随便选择其中一个模板后,回车确认。

后面会继续提供一些选项,按照自己的喜好选择完后,我们可以看到如下界面:

自定义安装

假如我们不想使用Vite或者SvelteKit,亦或者我们没有条件使用这两者,那就需要我们自己集成Svelte的环境。在日常开发时,我们通常会使用webpack或者Rollup作为我们项目的模块管理打包工具。因此笔者会分别介绍这两种环境下,如何搭建Svelte的运行环境。

这里笔者假设读者朋友们,在创建了webpack demo项目或者rollup demo项目后,在目录下都能有以下文件:

目录文件

App.svelte内内容随意,符合Svelte文件格式即可;

index.js的文件内容如下:

import App from './App.svelte';

new App({
  target: document.querySelector('#root')
});

index.html的内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>

<body>
  <div id="root"></div>
  <script src="./dist/index.js"></script>
  </body>
</html>

webpack

webpack中使用Svelte,除了必不可少的svelte,另外一个关键则是安装svelte-loader

mkdir webpack-demo

cd webpack-demo

npm init -y

npm install webpack webpack-cli -D

npm install babel-loader @babel/core -D

npm install svelte svelte-loader

安装完依赖后,修改webpack配置webpack.config.js

const path = require("path");

module.exports = {
  entry: "./src/index.js",
  output: {
    filename: "index.js",
    path: path.resolve(__dirname, "dist"),
  },
  resolve: {
    extensions: [".js", ".svelte"],
    conditionNames: ["svelte"],
  },
  module: {
    rules: [
      {
        test: /\.(js|ts)$/,
        use: [{ loader: "babel-loader" }],
      },
      {
        test: /\.(svelte)$/,
        use: [
          "babel-loader",
          {
            loader: "svelte-loader",
          },
        ],
      },
    ],
  },
};

如果在package.json中的scripts里约定了build命令,试着npm run build一下;亦或者直接在命令行中执行webpack命令,可以看到有个打包目录dist,index.html里引用的则是dist目录下的index.js文件。直接用浏览器打开index.html,便能看到定义在App.svelte里的内容。至于如何用npm run dev跑起来,以及支持热更新等操作,就留给读者朋友们自行探索了。


Rollup

Rollup中的关键则是rollup-plugin-svelte

import svelte from 'rollup-plugin-svelte';
import resolve from '@rollup/plugin-node-resolve';

export default {
  input: './src/index.js',
  output: {
    file: 'dist/index.js',
    format: 'umd'
  },
  plugins: [
    svelte(),
    resolve({
      browser: true,
      exportConditions: ['svelte'],
      extensions: ['.svelte']
    })
  ],
};

使用

经过上述一系列的安装教学,相信读者朋友们早就发现了如何在项目中使用Svelte。

首先在index.html文件内,提供一个可以挂载的节点,通常如下(读者可自行定义):

<div id="root"></div>

在入口文件index.jsmain.js中,如下定义:

import App from './App.svelte';

new App({
  target: document.querySelector('#root')
})


App.svelte则是我们初始的svelte文件,我们把App.svelte里写好的内容挂载到定义好的root节点上。

Svelte的文件以.svelte作为文件后缀名,在文件内,与Vue的template语法相似。

<script>
//代码文件
</script>

<style>
/* 样式文件*/
</style>

<!-- 此处一般放置元素标签(多个或者为空) -->

文件内的script,style和html内容三个部分均为可选的,顺序也没有要求。

VsCode Extension

我们用Vscode把安装好的项目打开,然后添加Svelte扩展。插件在我们编写svelte文件时,为我们提供语法高亮和智能检测。

VsCode插件

REPL

REPL(Read-Eval-Print Loop),是一个简单的交互式的编程环境。如果读者朋友们只是想简单学习下Svelte的语法,又觉得搭建一个Svelte环境项目太麻烦,那Svelte官网为开发者和学习者们提供了REPL环境,在上面我们可以快速编写试验Svelte的各种api语法。

repl

快速上手试试吧!

小结

本章我们学习了:

  • 使用Vite安装Svelte
  • 使用SvelteKit安装Svelte
  • 在webpack项目中运行Svelte
  • 在Rollup项目中运行Svelte
  • Svelte单文件的内容格式
  • 使用Svelte时会用到的辅助工具:VsCode插件、REPL运行环境等。