The best means to handle loose geometry or objects in blender for rigging is actually to separate them first… In saying this Armature modifiers are more useful then parenting. You can still select weight from bones in the menu when using an armature modifier. Like for example a backpack or hair or hat etc…
So add a armature modifier to the base main mesh , then select weight from bones.
Now for the loose parts. You simply assign the same armature modifier then you use the transfer weights option to transfer the weights from the main mesh to the loose object. Their are several tricky options when doing weight transfer. like the algorithm or the lookup / laying types etc.
But hands down this is the best method , tried and tested!
Look at these two models. It is one character with two different skins:
The main body was done via automatic weights from bones ( also a modifier , not parenting )
After this when creating different parts like a dress or a gun belt , those parts are loose. They each have an armature modifier pointing to the same armature , and their weights were done using the transfer weights method explained above.
Notice the gun belts on the hips and torso in the first skin, how well they move with the main body. Not perfect , you could do some manual tweaking but this result is achieved with a few clicks which is pretty good. I can assure you if those objects were part of the mesh when you tried to use automatic weighting , they would not have worked out so well as this.
I actually have this model as an example for my sketchfab utility examples on codepen. So you can see the various objects listed and hide or show them, for example click to hide “body” and look at all the loose parts animating very freaky.