开源项目:使用 Atom-Electron 和 Vue.js 制作的简单 RSS 阅读器!!

简介: 开源项目:使用 Atom-Electron 和 Vue.js 制作的简单 RSS 阅读器!!

你们有没有这种经历?早上醒来,打开手机,刷着各种新闻、博客、资讯网站,然后在信息的海洋中迷失,忘记了自己其实只是想知道今天的天气?

我也有过这样的苦恼。信息爆炸的时代,我们需要一个聪明的小助手帮我们整理和过滤这些信息。

于是,我发现了一个神器——Raven Reader。这是一个使用 Atom-Electron 和 Vue.js 制作的简单 RSS 阅读器,帮你轻松管理和阅读各种资讯

今天,我将带你们一起搭建这个开源项目,让你的信息阅读变得高效又愉快。准备好了吗?让我们开始吧!

简介

Raven Reader 是一个开源的个人 RSS 阅读器,它使用 Atom-Electron 构建桌面应用,结合 Vue.js 实现前端展示。这个项目的目标是提供一个简洁、美观、易用的 RSS 阅读工具,帮助用户高效管理和阅读新闻、博客等资讯内容。

8e4e4b1cb1420b7c71cc39702a188b57.png

为什么选择 Raven Reader?

  • 跨平台支持:一次编写,随处运行。无论是 Windows、macOS 还是 Linux,都可以轻松部署。
  • 现代化技术栈:基于 Atom-Electron 和 Vue.js 构建,性能优越,扩展性强。
  • 丰富的功能:支持多种 RSS 源、实时更新、文章分类、标签管理等功能。
  • 社区支持:活跃的开源社区,持续更新和维护,遇到问题时可以轻松找到解决方案。

项目特点

1. 简洁易用的界面

Raven Reader 提供了一个简洁、直观的用户界面,用户可以轻松添加、管理和阅读 RSS 源。

2. 支持多种 RSS 源

用户可以添加多个 RSS 源,并在同一个界面中查看所有的最新资讯,支持导入和导出 OPML 文件。

3. 跨平台支持

Raven Reader 可以在 Windows、macOS 和 Linux 上运行,无需额外的配置。

4. 实时更新

应用会定期检查 RSS 源的更新,并在有新内容时提示用户,确保你不会错过任何重要资讯。

5. 离线阅读

支持将文章内容缓存到本地,方便用户在没有网络连接时进行阅读。

6. 标签和分类管理

用户可以为文章添加标签和分类,方便组织和查找内容。

如何使用

接下来,我们将详细介绍如何安装和配置 Raven Reader。

1. 环境准备

在开始安装之前,确保你的开发环境已经准备好:

  • Node.js 和 npm:用于安装和管理项目依赖
  • Git:用于克隆项目代码

2. 安装 Node.js 和 npm

你可以通过以下命令安装 Node.js 和 npm:

curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs

3. 克隆项目代码

在你的工作目录下,运行以下命令克隆 Raven Reader 的代码:

git clone https://github.com/hello-efficiency-inc/raven-reader.git
cd raven-reader

4. 安装依赖

使用 npm 安装项目依赖:

npm install

5. 运行项目

使用以下命令启动开发服务器和 Electron 应用:

npm run dev

你现在可以在桌面上看到 Raven Reader 的应用界面了!

f0b23cdf6de7926ae061c3b4492dbe29.png

项目结构

项目的目录结构如下:

raven-reader/
├── build/
├── dist/
├── src/
│   ├── assets/
│   ├── components/
│   ├── main/
│   ├── renderer/
│   ├── store/
│   ├── App.vue
│   ├── main.js
│   ├── mainWindow.js
│   └── package.json
├── static/
├── .babelrc
├── .editorconfig
├── .eslintrc
├── .gitignore
├── package.json
├── README.md
└── webpack.config.js

主要文件说明

  • src/main/:包含 Electron 主进程相关的代码。
  • src/renderer/:包含 Vue.js 渲染进程相关的代码。
  • src/store/:包含 Vuex 状态管理相关的代码。
  • src/components/:包含 Vue.js 组件。
  • src/main.js:Vue.js 入口文件,初始化 Vue 实例。
  • src/mainWindow.js:Electron 主窗口文件,定义了主窗口的创建和配置。
  • webpack.config.js:Webpack 配置文件,用于打包和构建项目。

代码示例

src/mainWindow.js(Electron 主窗口文件)

const { app, BrowserWindow } = require('electron');
const path = require('path');
function createMainWindow() {
  const mainWindow = new BrowserWindow({
    width: 1200,
    height: 800,
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false,
    },
  });
  mainWindow.loadFile(path.join(__dirname, 'index.html'));
  mainWindow.on('closed', () => {
    app.quit();
  });
}
app.on('ready', createMainWindow);
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});
app.on('activate', () => {
  if (BrowserWindow.getAllWindows().length === 0) {
    createMainWindow();
  }
});

src/main.js(Vue.js 入口文件)

import { createApp } from 'vue';
import App from './App.vue';
import store from './store';
createApp(App).use(store).mount('#app');

src/App.vue(主组件文件)

<template>
  <div id="app">
    <h1>Raven Reader</h1>
    <FeedList />
    <FeedContent />
  </div>
</template>
<script>
import FeedList from './components/FeedList.vue';
import FeedContent from './components/FeedContent.vue';
export default {
  components: {
    FeedList,
    FeedContent,
  },
};
</script>
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

src/components/FeedList.vue

<template>
  <div class="feed-list">
    <h2>Feeds</h2>
    <ul>
      <li v-for="feed in feeds" :key="feed.id">
        {{ feed.title }}
      </li>
    </ul>
  </div>
</template>
<script>
import { mapState } from 'vuex';
export default {
  computed: {
    ...mapState(['feeds']),
  },
};
</script>
<style>
.feed-list {
  text-align: left;
  padding: 20px;
}
.feed-list ul {
  list-style-type: none;
  padding: 0;
}
.feed-list li {
  margin: 10px 0;
}
</style>

src/store/index.js

import { createStore } from 'vuex';
export default createStore({
  state: {
    feeds: [],
  },
  mutations: {
    setFeeds(state, feeds) {
      state.feeds = feeds;
    },
  },
  actions: {
    async fetchFeeds({ commit }) {
      const response = await fetch('https://api.rss2json.com/v1/api.json?rss_url=https://example.com/rss');
      const data = await response.json();
      commit('setFeeds', data.items);
    },
  },
  modules: {},
});

如何添加和管理 RSS 源

在 Raven Reader 中,你可以轻松地添加和管理 RSS 源。以下是详细步骤:

1. 添加 RSS 源

在应用界面中,点击 "Add Feed" 按钮,输入 RSS 源的 URL,然后点击 "Save"。应用会自动获取该源的最新内容并显示在列表中。

2. 管理 RSS 源

在 "Feeds" 列表中,你可以点击某个 RSS 源的标题,查看其所有文章。你还可以对文章进行分类、添加标签,方便日后查找。



相关文章
|
18天前
|
数据采集 监控 JavaScript
在 Vue 项目中使用预渲染技术
【10月更文挑战第23天】在 Vue 项目中使用预渲染技术是提升 SEO 效果的有效途径之一。通过选择合适的预渲染工具,正确配置和运行预渲染操作,结合其他 SEO 策略,可以实现更好的搜索引擎优化效果。同时,需要不断地监控和优化预渲染效果,以适应不断变化的搜索引擎环境和用户需求。
|
5天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
22天前
|
JavaScript
如何在 Vue 项目中选择合适的模块格式
【10月更文挑战第20天】选择合适的模块格式需要综合考虑多个因素,没有一种绝对正确的选择。需要根据项目的具体情况进行权衡和分析。在实际选择过程中,要保持灵活性,根据项目的发展和变化适时调整模块格式。
20 7
|
17天前
Vue3 项目的 setup 函数
【10月更文挑战第23天】setup` 函数是 Vue3 中非常重要的一个概念,掌握它的使用方法对于开发高效、灵活的 Vue3 组件至关重要。通过不断的实践和探索,你将能够更好地利用 `setup` 函数来构建优秀的 Vue3 项目。
|
22天前
|
JavaScript 前端开发 编译器
在 Vue 项目中使用 ES 模块格式的优点
【10月更文挑战第20天】在 Vue 项目中使用 ES 模块格式具有众多优点,这些优点共同作用,使得项目能够更高效、更可靠地开发和运行。当然,在实际应用中,还需要根据项目的具体情况和需求进行合理的选择和配置。
25 6
|
17天前
|
JavaScript 测试技术 UED
解决 Vue 项目中 Tree shaking 无法去除某些模块
【10月更文挑战第23天】解决 Vue 项目中 Tree shaking 无法去除某些模块的问题需要综合考虑多种因素,通过仔细分析、排查和优化,逐步提高 Tree shaking 的效果,为项目带来更好的性能和用户体验。同时,持续关注和学习相关技术的发展,不断探索新的解决方案,以适应不断变化的项目需求。
|
24天前
|
JavaScript 测试技术 API
跟随通义灵码一步步升级vue2(js)项目到vue3版本
Vue 3 相较于 Vue 2 在性能、特性和开发体验上都有显著提升。本文介绍了如何利用通义灵码逐步将 Vue 2 项目升级到 Vue 3,包括备份项目、了解新特性、选择升级方式、升级依赖、迁移组件和全局 API、调整测试代码等步骤,并提供了注意事项和常见问题的解决方案。
|
27天前
|
缓存 JavaScript 前端开发
《基础篇第4章:vue2基础》:使用vue脚手架创建项目
《基础篇第4章:vue2基础》:使用vue脚手架创建项目
63 3
|
27天前
|
JavaScript 前端开发 测试技术
JavaScript与TypeScript:为何TypeScript成为大型项目的首选
JavaScript与TypeScript:为何TypeScript成为大型项目的首选
28 1
|
28天前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。