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

推荐订阅源

大猫的无限游戏
大猫的无限游戏
aimingoo的专栏
aimingoo的专栏
I
InfoQ
B
Blog RSS Feed
D
DataBreaches.Net
S
SegmentFault 最新的问题
P
Proofpoint News Feed
A
About on SuperTechFans
WordPress大学
WordPress大学
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
小众软件
小众软件
博客园 - Franky
有赞技术团队
有赞技术团队
D
Docker
T
Tailwind CSS Blog
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Blog — PlanetScale
Blog — PlanetScale
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog
V
Visual Studio Blog
宝玉的分享
宝玉的分享
爱范儿
爱范儿

少数派

派早报: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 - 少数派
【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运行环境等。