tcp reno

Building any new project from scratch can be intimidating. There's a lot to decide before you can even start coding to test out your idea.

从头开始构建任何新项目都可能令人生畏。 在开始编码以检验您的想法之前,还有很多决定。

How are you building the front end? Plain CSS, or a framework? Vanilla HTML and JS, or a framework or library such as Vue, React, Angular, or Svelte?

您如何构建前端? 纯CSS还是框架? Vanilla HTML和JS,还是Vue,React,Angular或Svelte等框架或库?

What back end language will you use? JavaScript, Ruby, PHP, Python or something else? Maybe 'serverless'?

您将使用哪种后端语言? JavaScript,Ruby,PHP,Python还是其他? 也许是“无服务器”?

What about the database? Relational? MySQL, Postgresql? NoSQL? Mongo? Maybe something 'easy' like Firebase instead?

那数据库呢? 有关系吗 MySQL,Postgresql吗? NoSQL? 蒙哥 也许像Firebase这样的“简单”东西呢?

How will you handle authentication? Maybe a Passport integration that just bundles in a Facebook, Google, Github and LinkedIn login screen?

您将如何处理身份验证? 也许只是将Passport集成捆绑到Facebook,Google,Github和LinkedIn登录屏幕中?

Whenever I have a cool idea for a little app I want to build myself, I'm always exhausted by the range of options and decisions to be made.

每当我有一个想要构建自己的小应用程序的绝妙主意时,我总是会被各种选择和决策所累。

So I took some time to think about my ideal stack, including authentication and deployment considerations, and bundled it all up into one reasonably easy to setup package: Reno Expo.

因此,我花了一些时间考虑一下我理想的堆栈,包括身份验证和部署注意事项,并将其捆绑到一个易于设置的合理软件包中:Reno Expo。

什么是里诺博览会? (What is Reno Expo?)

Reno Expo stands for React, NodeJS, Express, and Postgresql. It also uses Sequelize as the ORM for the database.

Reno Expo代表React,NodeJS,Express和Postgresql。 它还将Sequelize用作数据库的ORM。

At its core it is a very simple Express app that has a Create React App bundled for the front end. It is designed to be deployed to Heroku and has a very simple interface for registering new users and logging in, using JWT for authentication.

它的核心是一个非常简单的Express应用程序,该应用程序的前端捆绑了一个Create React App。 它设计用于部署到Heroku,并具有一个非常简单的界面,用于注册新用户并使用JWT进行身份验证登录。

Apart from that, it is a completely blank slate. I've intentionally left it pretty empty in terms of CSS styling, so I can plug in any style libraries I want or write my own CSS as required.

除此之外,它是一个完全空白的板岩。 就CSS样式而言,我故意将其留空,因此我可以插入所需的任何样式库,或根据需要编写自己CSS。

Aside from the completely raw version of Reno Expo, I've also made a freeCodeCamp project, the Personal Library, using this stack. It serves as an example of how to integrate a CSS framework, Ant Design in this instance, and also provides some examples of extending the database with Sequelize migrations.

除了Reno Expo的完全原始版本外,我还使用此堆栈制作了一个freeCodeCamp项目,即Personal Library。 它充当了如何集成CSS框架(在此实例中为Ant Design)的示例,还提供了一些通过Sequelize迁移来扩展数据库的示例。

我在哪里可以买到? (Where can I get it?)

The code for the two apps can be found here:

这两个应用程序的代码可以在这里找到:

  • Reno Expo Starter Kit

    里诺世博入门套件

  • Personal Library, built with Reno Expo

    使用Reno Expo建立的个人图书馆

Each has a detailed README.md file, but I'll also explain how to get started with both, and explain how the latter app builds upon the starter kit in this article.

每个文件都有一个详细的README.md文件,但我还将说明如何同时使用这两个文件,并说明本文中的后一个应用程序是如何基于入门工具包构建的。

这些应用程序是什么样的? (What do the apps look like?)

Examples for both apps can be found here:

可以在此处找到这两个应用程序的示例:

  • Reno Expo, example hosted on Heroku

    里诺世博会,Heroku上的示例

  • Personal Library, hosted on Heroku

    在Heroku上托管的个人图书馆

The starter kit is hideous, frankly. As I stated earlier, it has minimal styling - and I wasn't kidding. The Personal Library shows how one might integrate a CSS framework to get some easy styling wins with minimal effort.

坦白说,入门工具包很可怕。 正如我之前所说,它的样式极少-我并不是在开玩笑。 个人图书馆展示了如何集成CSS框架,以最小的努力获得一些轻松的样式设计胜利。

里诺博览会入门 (Getting Started with Reno Expo)

To work with Reno Expo you will need the following installed on your local computer: git, Node, npm (bundled with your Node download), and Postgresql.

要使用Reno Expo,您需要在本地计算机上安装以下软件: git , Node ,npm(与Node下载捆绑在一起)和Postgresql 。

Use the latest versions of each if you are starting from scratch, but if you already have other versions of these on you system they may well work just fine.

如果从头开始,请使用每个版本的最新版本,但是如果您的系统上已经有其他版本,则可能很好用。

For the record, I've been developing with these versions: Node 8.16, npm 6.14 and Postgres 10, and my Heroku deployments have been the latest stable versions of all these.

作为记录,我一直在开发以下版本:Node 8.16,npm 6.14和Postgres 10,而我的Heroku部署是所有这些版本的最新稳定版本。

If you run into problems using different versions, either using these versions or try looking for differences in the appropriate change logs to help you get unstuck.

如果您在使用不同版本时遇到问题,请使用这些版本,或者尝试在适当的更改日志中查找差异,以帮助您解决问题。

Your Postgres installation will also require a valid user with database creation privileges. Setting this up is outside the scope of this article, but you can find the relevant guides for your environment with an online search for "getting started with postgres windows/mac/ubuntu" etc.

您的Postgres安装也将需要具有数据库创建特权的有效用户。 进行此设置不在本文的讨论范围之内,但是您可以通过在线搜索“ postgres windows / mac / ubuntu入门”等内容找到与您的环境相关的指南。

安装入门套件 (Installing the Starter Kit)

To initialise the starter kit, we will use two terminals. Later, I'll share a trick for spinning up your development environment from a single terminal, but for now we'll keep the front end and back end separated.

为了初始化入门工具包,我们将使用两个端子。 稍后,我将分享一个技巧,可以从一个终端扩展您的开发环境,但是现在,我们将前端和后端保持分离。

In terminal one, from the directory in which you wish to create your new app:

在第一终端中,从您想要创建新应用的目录中:

git clone git@github.com:JacksonBates/reno-expo.git

git clone git@github.com:JacksonBates/reno-expo.git

Then navigate to that new folder: cd reno-expo

然后导航到该新文件夹: cd reno-expo

Make a copy of the .env file: cp .env.example .env

复制.env文件: cp .env.example .env

You will need to adjust the development variables in the new .env file:

您将需要在新的.env文件中调整开发变量:

DEVELOPMENT_DATABASE=database_development
DEVELOPMENT_DATABASE_USERNAME=sequelize
DEVELOPMENT_DATABASE_PASSWORD=password

The development database can be whatever you like, but the username and password will have to match whatever you have configured for your local Postgres installation.

开发数据库可以是您喜欢的任何数据库,但是用户名和密码必须与您为本地Postgres安装配置的内容匹配。

Now install the npm packages for the back end: npm i

现在为后端安装npm软件包: npm i

Next we will create the database using Sequelize. Note, if your Postgres installation isn't set up properly, this is the first bit that will fall over...

接下来,我们将使用Sequelize创建数据库。 请注意,如果您的Postgres安装未正确设置,则这将是第一个失败的...

npx sequelize-cli db:create

npx sequelize-cli db:create

This will create the database with the name you set in your .env file.

这将使用您在.env文件中设置的名称创建数据库。

Now we can create the table for our users:

现在,我们可以为用户创建表:

npx sequelize-cli db:migrate

npx sequelize-cli db:migrate

If this works, you should see some terminal output such as:

如果可行,您应该会看到一些终端输出,例如:

== 20200606113054-create-user: migrating =======
== 20200606113054-create-user: migrated (0.074s)

If all this has worked, you can now start the back end server with npm start.

如果所有这些都奏效,则现在可以使用npm start后端服务器。

Setting up the front end should be more simple. In your second terminal navigate to the client folder: reno-expo/client

设置前端应该更简单。 在第二个终端中,导航到客户端文件夹: reno-expo/client

Install the node modules: npm i

安装节点模块: npm i

Now run the React app with npm start.

现在使用npm start运行React应用npm start

单终端启动 (Single terminal Launch)

If everything initialises properly, in future you can easily spin up both the React app and Express server with one command from a single terminal:

如果一切初始化正确,将来您可以使用一个命令从一个终端轻松启动React应用程序和Express服务器:

npm run dev

npm run dev

检查它是否有效 (Check that it works)

In your browser of choice, visit localhost:3000 and you should see a very basic 'Home' page and some links to an Admin and Login page.

在您选择的浏览器中,访问localhost:3000,您应该看到一个非常基本的“主页”页面以及一些指向“管理和登录”页面的链接。

Admin should be locked until you log in.

管理员应该锁定,直到您登录。

Login will require you to create a user account first. Click 'I don't have an account' and make one via the registration form. You can now log in and test your access to the Admin page.

登录将要求您首先创建一个用户帐户。 点击“我没有帐户”,然后通过注册表格进行注册。 现在,您可以登录并测试您对“管理员”页面的访问权限。

If all is working, you can begin to develop your app!

如果一切正常,则可以开始开发您的应用程序!

借助Reno Expo打造更实质的东西 (Building something more substantial with Reno Expo)

To create the Personal Library there were 3 main things to do:

要创建个人图书馆,要做的三件事是:

  1. install and implement the Ant Design CSS framework

    安装并实现Ant Design CSS框架
  2. create the new front end routes / views

    创建新的前端路线/视图
  3. extend the api with new database models and controllers

    使用新的数据库模型和控制器扩展api

After installing Ant Design with npm i antd I added the following line to the existing App.css file in the client/styles folder: @import"~antd/dist/antd.css";

使用npm i antd安装Ant Design之后, npm i antd添加到client/styles文件夹中的现有App.css文件中: @import"~antd/dist/antd.css";

This ensures the Ant Design styling will be available throughout the app.

这样可以确保在整个应用程序中都可以使用Ant Design样式。

The repo for the Personal Library contains all the amendments, but here are some examples of patterns you could use. Of course, you could roll your own CSS, or use other frameworks such as Material-UI, Bootstrap or others, what follows is just illustrative.

个人图书馆的存储库包含所有修订,但是这里有一些您可以使用的模式示例。 当然,您可以滚动自己CSS或使用其他框架,例如Material-UI,Bootstrap或其他框架,下面仅作说明。

实施布局 (Implementing a layout)

Apart from a small function handling the auth token, the rest of this uses the components supplied by Ant Design for creating an app with a persistent side bar for navigation, and dynamically rendered content depending on the active component.

除了处理auth令牌的小功能外,其余功能都使用Ant Design提供的组件来创建带有用于导航的持久性侧栏的应用程序,并根据活动的组件动态呈现内容。

Where does the active component get loaded?

活动组件在哪里装载?

Above we have an example of the PublicRoute component. There are some other route components I use, but understanding them should be straightforward enough based on this one.

上面我们有一个PublicRoute组件的示例。 我还使用其他一些路由组件,但是基于这一点,对它们的理解应该足够简单。

Our PublicRoute is a React-Router <Route> wrapping the layout from above.

我们的PublicRoute是一个React-Router <Route> ,从上面封装了布局。

App.js shows examples of these Public Routes being used, for example:

App.js显示了正在使用的这些公共路由的示例,例如:

<PublicRoute exact path="/"><Home />
</PublicRoute>

So in the first two files we can see a reference to children.

因此,在前两个文件中,我们可以看到对children的引用。

children is a built in prop in React that references the child components that are nested in parent components.

children是React中的内置道具,它引用嵌套在父组件中的子组件。

In the above examples we see the <Home> component as a child of the PublicRoute. In the PublicRoute.js file we see the reference to children, both in the props and being passed directly to the <AppLayout> component. And finally in the AppLayout.js the <Content> component also contains the children. In all these cases, children refers to that <Home> component passed from App.js.

在上面的示例中,我们将<Home>组件视为PublicRoute 。 在PublicRoute.js文件中,我们在道具中看到了对子级的引用,这些引用直接传递给<AppLayout>组件。 最后,在AppLayout.js中, <Content>组件还包含子代。 在所有这些情况下,子代均指从App.js传递的<Home>组件。

In practice, this means any of the components passed from App.js on public or private routes will be rendered into the content area on our Layout, leaving the navigation sidebar untouched.

实际上,这意味着从App.js在公共或私有路线上传递的任何组件都将呈现到“布局”的内容区域中,而导航侧栏保持不变。

Other files in the client folder should give ample examples of how things like the Login form can be replaced with the Ant Design framework after some small modifications.

客户端文件夹中的其他文件应提供充分的示例,说明在进行一些小的修改后如何用Ant Design框架替换“登录”表单之类的内容。

对后端进行更改 (Making changes to the back end)

The other main thing to develop when working with Reno Expo is the api itself - after all, it's useful being able to register a user and have them log in, but most apps require more than that to be really useful.

使用Reno Expo时要开发的另一项主要内容是api本身-毕竟,能够注册用户并让他们登录很有用,但是大多数应用程序需要的功能远不止于此。

For the purposes of my version of the Personal Library we needed to implement a number of new api endpoints, and create some new database tables to store book and comment data.

就我的个人库版本而言,我们需要实现许多新的api端点,并创建一些新的数据库表来存储书籍和评论数据。

It's worth highlighting here that in these examples I'm working backwards. Normally I'd create the database migrations and models first, then build the controller methods and api routes afterwards. I present them 'backwards' here so we can follow the logic from our goal back through how it was implemented piece by piece.

值得在这里强调的是,在这些示例中,我正在倒退。 通常我会先创建数据库迁移和模型,然后再构建控制器方法和api路由。 我在这里向他们介绍“后退”,因此我们可以遵循目标的逻辑,再逐步实现目标。

The file reno-expo-books/app/router/router.js contains all the routes for the project, but I'll share two examples here for illustration.

文件reno-expo-books/app/router/router.js包含了该项目的所有路由,但是我将在此处共享两个示例进行说明。

// Public route
app.get("/api/books", booksController.getBooks);// Private route
app.get("/api/user/books",[authJwt.verifyToken],booksController.getUserBooks);

Adding public routes is simple enough, we just need to define the http method, the api endpoint and the controller method that will handle the request, e.g. a GET request, to api/books handled by the booksController getBooks method.

添加公共路线非常简单,我们只需要定义http方法,api端点和控制器方法即可处理对通过booksController getBooks方法处理的api/books的请求(例如GET请求)。

The JWT auth that we already have available from the Reno Expo starter makes the private routes pretty simple too. All we need to do is include the middleware for verifying the token, [authJwt.verifyToken] in the example above.

我们已经可以从Reno Expo启动程序中获得JWT身份验证,这也使私有路由变得非常简单。 我们需要做的就是在上面的示例中包含用于验证令牌的中间件[authJwt.verifyToken]

The controllers for these endpoints, i.e. the code that processes the requests, are also reasonably straightforward, although using Sequelize for the first time can have a bit of a learning curve.

这些端点的控制器(即处理请求的代码)也相当简单明了,尽管第一次使用Sequelize可能会有一点学习曲线。

Here's an example of the public 'getBooks' method referenced above:

这是上面引用的公共“ getBooks”方法的示例:

The imports at the top of the file provide the database models and the Sequelize library.

文件顶部的导入提供了数据库模型和Sequelize库。

The getBooks method looks complicated, but it is made up of a few relatively simple parts.

getBooks方法看起来很复杂,但是它由一些相对简单的部分组成。

Firstly we call the Book model. The model is an ORM representation of the books table - we'll look at how we create that table soon.

首先,我们称之为Book模型。 该模型是books表的ORM表示-我们将很快了解如何创建该表。

Sequelize, like most ORMs, provides not only a schema or description of the table, but also methods that can be called upon the model. In this case we call Book.findAll({...}), which will return all the books it can find that match particular parameters we pass to it.

像大多数ORM一样,Sequelize不仅提供表的架构或描述,还提供可以在模型上调用的方法。 在这种情况下,我们调用Book.findAll({...}) ,它将返回可以找到的所有与传递给它的特定参数匹配的书。

In this particular instance I wanted to receive something like this:

在这种特殊情况下,我希望收到如下信息:

[{"id": 1,"title": "The Hobbit","commentcount": 3},{"id": 2,"title": "The Lord of the Rings","commentcount": 2}
]

In the findAll method, first we pass the where parameters. If you are familiar with SQL, it should be pretty clear what this does. In the example above we want all books where the userId is null. This is because we only want to return the public books from this controller, so only those with no user attached to them.

在findAll方法中,首先我们传递where参数。 如果您熟悉SQL,应该很清楚这是做什么的。 在上面的示例中,我们希望userId为null的所有书籍。 这是因为我们只想从此控制器返回公开书,所以只有那些未附加用户的书才可以返回。

Next, the attributes describes the shape of the response, or the data we expect back. The exclude section is easier to understand, so I'll explain it first. The books table has columns for the created_at and updated_at timestamps for each record. Since we don't want these in our json response, we can omit them explicitly in the exclude section.

接下来, attributes描述响应的形状或我们期望返回的数据。 排除部分更容易理解,因此我将首先对其进行解释。 书籍表的每条记录都有针对created_at和updated_at时间戳的列。 由于我们不想在json响应中使用它们,因此可以在exclude部分中显式省略它们。

Our include portion of the attributes is more complicated. In raw SQL we would count the number of associated comments like this:

我们的include部分属性更加复杂。 在原始SQL中,我们将这样计算关联的注释数:

SELECT "Books"."id", "Books"."title", COUNT("BookComments"."id") AS "commentcount"
FROM "Books"
JOIN "BookComments" ON "BookComments"."bookId" = "Books"."id"
GROUP BY "Books"."id";

The SQL COUNT function counts all the records in the BookComments.id column, and the GROUP BY function limits the counted comments to each book, by ID.

SQL COUNT函数对BookComments.id列中的所有记录进行计数,而GROUP BY函数按ID将计数的注释限制在每本书中。

It's worth pointing out that commentcount is not a column on the books table, rather it is a calculated column derived from the thing we ask the database to count for us.

值得指出的是,commentcount不是books表上的一列,而是从我们要求数据库为我们计数的东西派生的计算列。

Sequelize gives us access to the count function via its library.

Sequelize使我们可以通过其库访问count函数。

The relevant function is included in the attributes above like this:

相关功能包含在上面的属性中,如下所示:

[Sequelize.fn("COUNT", Sequelize.col("BookComments.id")),"commentcount"]

I.e. "Call the Sequelize function 'COUNT', count the columns for BookComments.id, and name the generated column 'commentcount'

即“调用Sequelize函数'COUNT',计算BookComments.id的列,并将生成的列命名为'commentcount'

This provides our count function just like in the SQL version. All that's left is to include the group: ['Book.id'] as an extra parameter of the findAll method on the Book model.

就像SQL版本一样,这提供了我们的计数功能。 剩下的就是包括group: ['Book.id']作为Book模型上findAll方法的额外参数。

The other part you may have noticed in the findAll method parameters is this:

您可能在findAll方法参数中注意到的另一部分是:

include: {model: BookComment,attributes: [],
},

That's right, another include. Notice that this one is not nested in the attributes, but is its peer. This include acts much the same way as the JOIN statement in the SQL above. It means we want to include the BookComment model, but we don't need to add any attributes since we don't want to reference any of the columns it has directly - we just use it in the count function.

是的, 另一个包括。 请注意,这不是嵌套在属性中,而是它的对等体。 这包括与上述SQL中的JOIN语句几乎相同的行为。 这意味着我们想要包括BookComment模型,但是由于我们不想直接引用它具有的任何列,因此我们不需要添加任何属性-我们只在count函数中使用它。

对数据库进行更改 (Making changes to the database)

The final thing we need to understand to be productive with Sequelize is the migrations for making changes to the database.

为了使Sequelize富有成效,我们需要了解的最后一件事是对数据库进行更改的迁移。

Migrations can be thought of as source control for your database.

可以将迁移视为数据库的源代码控制。

While you can amend a database directly by creating new tables, adding columns, introducing constraints, changing data types or whatever else, using migrations allows you to make experimental changes with the ability to roll them back easily, and be able to share your development on a database with other people that do not have to struggle with keeping their local databases, and prod, in sync.

虽然您可以通过创建新表,添加列,引入约束,更改数据类型等来直接修改数据库,但是使用迁移可以使您进行实验性更改,并能够轻松地回滚它们,并能够在一个与其他人一起工作的数据库,这些人不必为保持本地数据库和产品同步而苦恼。

Migrations are essentially code that tell your database how to change, and how to undo the change that was introduced, should that be necessary.

迁移实际上是告诉您数据库如何更改以及在必要时如何撤消引入的更改的代码。

Here is the migration for creating the books table:

这是用于创建books表的迁移:

This migration is a module that exports two functions: up and down

此迁移是一个导出两个功能的模块: updown

The up function makes the changes, while the down function undoes any of the changes that were introduced.

up功能进行更改,而down功能撤消引入的任何更改。

So here we see that up creates a table called 'Books' with the columns id, title, created_at and updated_at. Each column has some associated qualities as well, such as data type, and whether it can contain a null value, for example.

因此,在这里我们看到up创建了一个名为'Books'的表,其中包含ID,标题,created_at和updated_at列。 每列还具有一些关联的质量,例如数据类型,以及是否可以包含空值。

The down function simply drops the table.

向下功能只是删除表格。

I won't share all of the next migration, i.e. the one for creating the Book Comment table, but I will show a snippet from it's up function that defines the bookId column:

我不会共享所有下一个迁移,即用于创建Book Comment表的迁移,但是我将显示定义了bookId列的up函数的摘录:

bookId: {type: Sequelize.INTEGER,onDelete: "CASCADE",references: {model: { tableName: "Books" },key: "id",},allowNull: false,
},

The interesting things to note here are the onDelete property, which is set to "CASCADE" and the references property which links the books table via the id column. This sets up the relationship between a book and its comments. The onDelete property tells the database what to do if a book is deleted: that deletion action should cascade to all associated comments. That is, if I delete 'The Hobbit' all the comments relating to 'The Hobbit' get deleted too.

这里要注意的有趣的事情是onDelete属性(设置为“ CASCADE”)和references属性,该属性通过id列链接books表。 这将建立一本书与其评论之间的关系。 onDelete属性告诉数据库如果删除一本书该怎么办:删除操作应级联到所有关联的注释。 也就是说,如果我删除“霍比特人”,那么与“霍比特人”相关的所有注释也会被删除。

The last thing to be aware of is that these migrations are also supported by models. The BookComment model looks like this:

最后要注意的是,模型也支持这些迁移。 BookComment模型如下所示:

"use strict";
module.exports = (sequelize, DataTypes) => {const BookComment = sequelize.define("BookComment",{comment: DataTypes.TEXT,bookId: {type: DataTypes.INTEGER,references: {model: "Books",key: "id",},},},{});BookComment.associate = function (models) {// associations can be defined hereBookComment.belongsTo(models.Book, {foreignKey: "bookId",});};return BookComment;
};

You will notice some similarities between this and the migration. It has two parts, the Model definition and the model associations. These help reinforce the relationship between the various tables as necessary.

您将注意到此迁移与迁移之间的一些相似之处。 它包含两个部分,模型定义和模型关联。 这些有助于根据需要加强各种表之间的关系。

To create tables from scratch, you can use a command like this:

要从头开始创建表,可以使用如下命令:

npx sequelize-cli model:generate --name Post --attributes post:text

npx sequelize-cli model:generate --name Post --attributes post:text

This will automatically generate a model skeleton and a migration skeleton for a posts table with the column 'post'. You can then fill in the migration and model with whatever other column details or associations are relevant.

这将自动为带有“ post”列的posts表生成模型骨架和迁移骨架。 然后,您可以使用其他与列相关的详细信息或关联来填写迁移和模型。

If you just want to amend an existing table, for example, to change a data type, or add a column, you can use a command to only generate a migration:

例如,如果您只想修改现有表以更改数据类型或添加列,则可以使用命令仅生成迁移:

npx sequelize-cli migration:generate --name add-userId-to-posts

npx sequelize-cli migration:generate --name add-userId-to-posts

You can then make the changes to the existing model and new migration file as necessary.

然后,您可以根据需要对现有模型和新的迁移文件进行更改。

应用数据库更改 (Applying database changes)

Simply writing the code to update the database is not enough, you also need to run the migrations for each database your code works on - i.e. your local dev machine, maybe your staging server if you have one, and also your production server.

仅仅编写代码来更新数据库是不够的,您还需要为代码所在的每个数据库运行迁移-即本地开发机,如果有的话,也可以是登台服务器,还需要生产服务器。

The command for running these is:

运行这些命令是:

npx sequelize-cli db:migrate

npx sequelize-cli db:migrate

You can roll back migrations as well:

您还可以回滚迁移:

npx sequelize-cli db:migrate:undo

npx sequelize-cli db:migrate:undo

编码愉快! ( Happy coding!)

That's it! As I mentioned above, I personally deploy everything I make with these to Heroku, and there are detailed instructions for the particulars of deploying them to Heroku in the README.md of Reno Expo. This also includes the commands for running migrations on Heroku's server.

而已! 如上所述,我将自己制作的所有东西都部署到Heroku,并且在Reno Expo的README.md中有详细的说明将它们部署到Heroku。 这还包括用于在Heroku的服务器上运行迁移的命令。

There is a lot to take in here. But if you fundamentally understand Express and React, and are willing to dig in to the Sequelize docs when needed, you can build pretty much anything you can imagine that benefits from a relational database using this starter kit.

这里有很多东西。 但是,如果您从根本上理解Express和React,并愿意在需要时使用Sequelize文档,则可以使用此入门工具包构建几乎可以想象得到的任何关系数据库中的任何东西。

It's not quite as fully featured as a proper MVC framework like Rails, Laravel, Sails, or Nest, but I happen to like that there is less cruft and less magic hidden in the internals of this. It is, after all, just a Create React App bundled with a light server and an ORM package. The rest is up to you.

它并没有像Rails,Laravel,Sails或Nest这样的适当的MVC框架那样具有完整的功能,但是我碰巧喜欢它的内部隐藏的东西更少, magic也更少。 毕竟,它只是一个与轻型服务器和ORM软件包捆绑在一起的Create React App。 其余的取决于您。



If you made it to the end of this article, and especially if you build anything with Reno Expo, I would love to hear from you. You can contact me on Twitter: @JacksonBates

如果您到本文末尾,特别是如果您使用Reno Expo构建任何东西,我希望收到您的来信。 您可以在Twitter上与我联系: @JacksonBates

翻译自: https://www.freecodecamp.org/news/reno-expo-full-stack-starter/

tcp reno

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. javascript 符号_掌握javascript es6符号

    javascript 符号JavaScript is one of the cores of web development. JavaScript, also known as ECMAScript was standardized in 1997. Since then, the below primitive values were present in the language.JavaScript是Web开发的核心之一。 JavaScript&#xff0c;也称为…...

    2024/4/21 11:46:17
  2. Web前端的学习与应用

    1. 简介 1.1 Web前端 前端位于整个项目首要要开发的内容&#xff0c;直接和用户打交道&#xff0c;实现页面的展现和交互功能&#xff0c;所以在分类上俗称为前端。随着软件技术的日趋成熟&#xff0c;前端内容也呈现爆炸式的增长&#xff0c;和革命性的变革&#xff0c;前端…...

    2024/4/21 13:26:50
  3. JSDuck用法详解

    字数&#xff1a;3692字 阅读时间&#xff1a;15分钟 前言 ​ 首先&#xff0c;咱们有一个前提&#xff0c;JSDuck对我们而言只是一个便于API查看的文档化工具。因此&#xff0c;只要它能够满足我们文档化的所有需求&#xff0c;并且优雅地显示出来就足够了。所以&#xff0c;…...

    2024/4/21 13:26:50
  4. python 基础知识

    前言 推荐使用Typora解锁全套&#xff0c;下载地址&#xff1a;https://www.typora.io/ Markdown是一种可以使用普通文本编辑器编写的标记语言&#xff0c;通过简单的标记语法&#xff0c;它可以使普通文本内容具有一定的格式。 使用word撰写文档&#xff0c;有如下的弊端&am…...

    2024/5/3 7:05:43
  5. 妩媚欧式双眼皮图片

    ...

    2024/4/20 15:57:35
  6. 前端的简单内容

    文章目录一、HTML- 1.学习方法- - 1.概念- - 2.前端技术栈- 2.HBuilderX- - 1.介绍- - 2.jQuery语法支持- 3.Web概述- 4.静态页面HTML- - 1.概述- - 2.结构- - 3.语法- 5.常用标签- - 1.标题标签- - 2.列表标签- - 3.图片标签- - 4.超链接标签- 6.input(输入框)标签- 7.表格标签…...

    2024/4/20 15:57:35
  7. 美颜软件开眼尾和做双眼皮大概要多少钱

    ...

    2024/4/20 15:57:33
  8. ionic4中引入ng-zorro, 实现环形进度条

    1、创建项目 ionic start myIonic tabs --typeangular 2、安装ng-zorro 这个模块依赖动画模块&#xff0c;所以安装两个插件 npm install angular/animations4.4.4 --save --save-exactnpm install ng-zorro-antd --save 3、配置ionic4默认tabs路由懒加载&#xff0c;所以需要这…...

    2024/5/2 22:51:53
  9. 原声JS瀑布流加延迟加载

    <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><title>瀑布流</title><style>*{margin: 0px;padding:0px;}.box{position: relative;top:0px; }ul li{list-style-type: none;position: absolute…...

    2024/4/20 15:57:31
  10. 做双眼皮可以做一只眼睛吗

    ...

    2024/4/20 15:57:30
  11. 双眼皮大约多长时间定型

    ...

    2024/5/3 8:29:11
  12. 双眼皮价格为啥不一样

    ...

    2024/4/21 13:26:48
  13. 全切双眼皮还是能看出来吗

    ...

    2024/4/21 13:26:48
  14. Angular应用初始化APP_INITIALIZER

    APP_INITIALIZER是Angular提供的依赖注入令牌&#xff0c;可以在Angular应用程序初始化过程中注入一些自定义逻辑。 我们可以近似的把injection token看成ABAP BadI definition&#xff0c;而把injection看成BadI implementation&#xff1a; 这里能看到大量的injection实现&am…...

    2024/4/21 13:26:46
  15. 广州失败割开双眼皮一般多少价钱是多少钱

    ...

    2024/4/21 13:26:45
  16. 目前割过双眼皮在做

    ...

    2024/4/21 13:26:45
  17. 长得好看的人想修复全切双眼皮想修复

    ...

    2024/5/2 10:00:10
  18. 全切双眼皮失败多长时间能做修复

    ...

    2024/4/21 13:26:42
  19. 姨妈割双眼皮手术多少钱直问广州紫 馨

    ...

    2024/4/21 13:26:42
  20. 生理期第五天做了刚做的全切双眼皮多长时间可以修复

    ...

    2024/4/21 13:26:41

最新文章

  1. 【C++】C++ 11 新特性:使用示例

    文章目录 C 11 新特性变量类型推导 auto表达式类型推导 decltype初始化列表基于范围的for循环Lambda 表达式智能指针空指针nullptr左值右值移动语义和完美转发常量表达式 constexpr委托构造函数继承构造函数overridefinal并发编程正则表达式 C 11 新特性 以下内容给出C11部分新…...

    2024/5/3 9:10:45
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 零基础 HTML 入门(详细)

    目录 1.简介 1.1 HTML是什么? 1.2 HTML 版本 1.3 通用声明 2.HTML 编辑器 3.标签的语法 4.HTML属性 5.常用标签 5.1 head 元素 5.1.1 title 标签 5.1.2 base 标签 5.1.3 link 标签 5.1.4 style 标签 5.1.5 meta 标签 5.1.6 script 5.2 HTML 注释 5.3 段落标签…...

    2024/5/1 13:12:05
  4. DDIM,多样性与运行效率之间的trade off

    DDPM的重大缺陷在于其在反向扩散的过程中需要逐步从 x t x_t xt​倒推到 x 0 x_0 x0​&#xff0c;因此其推理速度非常缓慢。相反&#xff0c;DDPM的训练过程是很快的&#xff0c;可以直接根据 x 0 x_0 x0​到 x t x_t xt​添加的高斯噪声 ϵ \epsilon ϵ完成一次训练。 为了解…...

    2024/5/2 19:10:17
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/2 9:28:15
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57